合并列和组合内容

Merging columns and combining contents

我想合并两列并将它们的内容加在一起,例如

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

创建

X3
8
15
6
6
4
NA

任何指示将不胜感激?

在基础 R 中你可以这样做:

X3 <- X1 + X2

但这将 return NA,而您只有一个 NA。如果你想忽略 NA,并在添加 NA 和 4 时让它成为 return 4,你可以这样做:

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

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

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

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

基础 R 解决方案将适用于单独的向量,即使不在单个 df 中也是如此。

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)