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

R 合并/合并列,同时避免NA?,r,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 对于一个简

我有一个非常简单的问题,但还没有找到解决方案。我希望有人能帮忙。我有一个数据帧
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
对于一个简单的解决方案来说,这似乎是一个非常常见的问题,但我在stackoverflow或google的搜索中找不到解决方案。谁能给我指出正确的方向吗

EDIT:我上面的示例只显示了两列,但我将在一个更大的数据框架中工作,其中包含更多列(但我仍然只需要组合两列)。如果有人能推荐一种将两列合并到一个大数据框架中的通用解决方案,我将不胜感激

这里有一种方法:

> 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
,您可以使用操作符
[
对您感兴趣的列进行子设置:

> 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
>set.seed(1)#添加新列
>test3$AA test3#这就是test3的样子
A B AA
1 NA 9.373546
2 NA 10.183643
3 NA 3 9.164371
4 NA 11.595281
>转换(test3,C=rowSums(test3[,C(“A”,“B”)],na.rm=TRUE))
A、B、A、C
1 NA 9.373546 1
2 NA 10.183643 2
3 NA 3 9.164371 3
4 NA 11.595281 4

谢谢-你能推荐一种在更大的数据框架中使用更多列的方法吗(我仍然需要合并两列)?例如,想象一下如果有另一列“AA”我不想将其包含在合并中?不适用于非数字列这可能在编写答案时不存在,但由于我带着相同的问题来到这里并找到了更好的解决方案,这是为未来的谷歌用户准备的:您需要的是来自dplyr的coalesce()函数
> 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