合并/合并列,同时避免NA?

时间:2014-02-28 21:25:47

标签: r

我有一个非常简单的问题,但一直无法找到解决方案。我希望有人可以提供帮助。我有一个数据框test3

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或google的搜索中找不到解决方案。有人能指出我正确的方向吗?

编辑:我上面的示例只显示了两列,但我将在一个更大的数据框中使用更多的列(但我仍然只需要合并两列)。如果有人可以推荐一个通用的解决方案来合并大数据帧中的两列,我会很感激!

1 个答案:

答案 0 :(得分: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

考虑以下带有附加列test3的data.frame AA,您可以使用运算符[来转发您感兴趣的列:

> 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