2014-02-28 41 views
3

我有一个非常简单的问题,但一直没能找到解决方案。我希望有人能帮忙。我有一个数据帧test3在避开NA的情况下合并/合并列?

test3 <- structure(list(A = c(1L, 2L, NA, 4L), B = c(NA, NA, 3L, NA)), .Names = c("A", 
"B"), class = "data.frame", row.names = c(NA, -4L)) 


    A B 
1 1 NA 
2 2 NA 
3 NA 3 
4 4 NA 

,我想结合/合并列AB到第三个栏C

A B C 
1 1 NA 1 
2 2 NA 2 
3 NA 3 3 
4 4 NA 4 

这似乎是一个简单的一个非常普遍的问题解决方案,但我找不到解决方案在我的搜索stackoverflow或谷歌。任何人都可以将我指向正确的方向吗?我上面的例子只显示了两列,但我将工作在一个更大的数据框中,有更多的列(但我仍然需要只合并两列)。如果任何人都可以推荐一个通用的解决方案来合并大数据框中的两列,我会很感激!

+0

这可能在答案写出时并不存在,但是因为我来到这里时遇到了同样的问题,并找到了一个更好的解决方案,因此它适用于未来的Google Analytics: 您想要的是公司alesce()函数来自dplyr – jzadra

回答

4

这里有一个办法:

> transform(test3, C=rowSums(test3, na.rm=TRUE)) 
    A B C 
1 1 NA 1 
2 2 NA 2 
3 NA 3 3 
4 4 NA 4 

考虑以下data.frame test3有一个附加列AA,您可以使用操作[到subet你有兴趣的列:

> set.seed(1) # adding a new column 
> test3$AA <- rnorm(4, 10, 1) 
> test3 # this is how test3 looks like 
    A B  AA 
1 1 NA 9.373546 
2 2 NA 10.183643 
3 NA 3 9.164371 
4 4 NA 11.595281 
> transform(test3, C=rowSums(test3[, c("A", "B")], na.rm=TRUE)) 
    A B  AA C 
1 1 NA 9.373546 1 
2 2 NA 10.183643 2 
3 NA 3 9.164371 3 
4 4 NA 11.595281 4 
+0

谢谢 - 你能推荐一种方法,可以在一个更大的数据框中有很多列(我仍然需要组合2列)吗?例如,想象一下如果有另一列“AA”,我不想将它包含在合并中? – Thomas

+1

谢谢Jiber!这确实有效 – Thomas

+0

不适用于非数字列 – jzadra

相关问题