合并列和组合内容

时间:2018-04-28 20:14:33

标签: r dplyr plyr

我希望合并两列并将它们的内容添加到一起,例如

X1  X2
3   5
6   9
3   3
0   6
NA  4
NA  NA

创建

X3
8
15
6
6
4
NA

任何迹象都会受到高度赞赏?

2 个答案:

答案 0 :(得分:1)

rowSums就是这种情况。如果data.frame超过2列,则df应在下面的解决方案中替换为df[c("X1","X2")]

如果OP希望最后一行有NA,那么解决方案可以是:

df$X3 <- ifelse(rowSums(is.na(df)) == ncol(df), NA, rowSums(df, na.rm = TRUE))

df
#    X1 X2 X3
# 1  3  5  8
# 2  6  9 15
# 3  3  3  6
# 4  0  6  6
# 5 NA  4  4
# 6 NA NA NA

如果最后一行(所有NA)预期总和为0,则简单rowSums将起作用:

df$X3 <- rowSums(df, na.rm = TRUE)

df
#    X1 X2 X3
# 1  3  5  8
# 2  6  9 15
# 3  3  3  6
# 4  0  6  6
# 5 NA  4  4
# 6 NA NA  0

数据:

df <- read.table(text = 
"X1  X2
3   5
6   9
3   3
0   6
NA  4
NA  NA",
header = TRUE)

答案 1 :(得分:0)

在基地R你可以这样做:

X3 <- X1 + X2

但是如果您有一个NA,这将返回NA。如果你想忽略NA,并在你添加NA和4时返回4,你可以这样做:

X3 <- sum(X1, X2, na.rm = TRUE)

在dplyr语法中,你可以这样做:

df %>% mutate(X3 = X1 + X2)

也就是说,假设X1和X2是df中的两个独立列。

基本R解决方案将在单独的向量上工作,即使不在单个df中也是如此。