如何使用R将两个或多个变量转换(计算)为一个变量?

我在合并数据中的两个或多个变量时遇到了些困难。我可以在Excel中完成这个操作,但不知道如何在R中实现同样的功能。

基本上我想使用下面的变量创建两个组合变量:

数据1:创建变量CombineA+B

country  year       A1         B1        **combineA1+B1**
USA      2002       0          0            0
USA      2003       1          1            2
USA      2004       NA         1            1
USA      2005       0          0            0
USA      2006       0          1            1
USA      2007       0          0            0
USA      2008       0          1            1
USA      2009       NA         NA           NA
USA      2010       0          1            1
USA      2011       NA         0            0
USA      2012       0          1            1
USA      2013       0          0            0
USA      2014       0          1            1

创建变量”combineA1+B1″看起来很简单,只需将A1和B1相加即可。在Excel中这很简单,我想在R中也应该是这样的。然而,NA值在相加时会造成问题。因此,如何创建如上所示的combineA1+B1变量呢?

如果A1和B1都为NA,那么combineA1+B1也应该为NA。如果其中一个为NA,另一个为1或0,则应返回相应的数值(例如,2004年的美国数据)。

我还想创建另一个组合变量:”combineA1+B1+C1+D1″

数据2:创建变量”combineA1+B1+C1+D1″

country year    A1  B1  C1  D1  combineABCD
USA     2002    0   0   0   0   0
USA     2003    1   1   0   0   2
USA     2004    NA  1   0   0   1
USA     2005    0   0   0   0   0
USA     2006    0   1   0   0   1
USA     2007    0   0   0   0   0
USA     2008    0   1   1   0   2
USA     2009    NA  NA  NA  NA  NA
USA     2010    0   1   1   0   2
USA     2011    NA  0   0   0   0
USA     2012    0   1   1   0   2
USA     2013    0   0   0   0   0
USA     2014    0   1   1   0   2

我想一旦我知道如何创建第一个组合变量,我应该也能创建这个变量。尽管我还不确定如何处理所有这些NA值?

非常感谢您能提供的所有建议,以正确地添加这些变量。


回答:

通过一些搜索,我找到了这篇文章。我对这段代码不承担任何责任。

mysum <- function(x) if (all(is.na(x))) NA else sum(x, na.rm=T)
df$combinedA1B1 <- apply(df[, c("A1", "B1")], 1, mysum)
df
#    country year A1 B1 combinedA1B1
# 1      USA 2002  0  0            0
# 2      USA 2003  1  1            2
# 3      USA 2004 NA  1            1
# 4      USA 2005  0  0            0
# 5      USA 2006  0  1            1
# 6      USA 2007  0  0            0
# 7      USA 2008  0  1            1
# 8      USA 2009 NA NA           NA
# 9      USA 2010  0  1            1
# 10     USA 2011 NA  0            0
# 11     USA 2012  0  1            1
# 12     USA 2013  0  0            0
# 13     USA 2014  0  1            1

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注