我希望合并两列并将它们的内容添加到一起,例如
X1 X2
3 5
6 9
3 3
0 6
NA 4
NA NA
创建
X3
8
15
6
6
4
NA
任何迹象都会受到高度赞赏?
答案 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中也是如此。