我在合并数据中的两个或多个变量时遇到了些困难。我可以在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