我有一个非常简单的问题,但一直无法找到解决方案。我希望有人可以提供帮助。我有一个数据框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
我希望将列A
和B
合并/合并到第三列C
以提供
A B C
1 1 NA 1
2 2 NA 2
3 NA 3 3
4 4 NA 4
这似乎是一个简单解决方案的常见问题,但我在stackoverflow或google的搜索中找不到解决方案。有人能指出我正确的方向吗?
编辑:我上面的示例只显示了两列,但我将在一个更大的数据框中使用更多的列(但我仍然只需要合并两列)。如果有人可以推荐一个通用的解决方案来合并大数据帧中的两列,我会很感激!
答案 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