如果至少一个组件不是NA,则创建NA变为0的变量

时间:2018-04-13 10:15:00

标签: r database

想象一下,我有三个变量,想要创建一个名为Total的第四个变量,它是A,B和C的总和但是....如果缺失值(NA)出现在1或2个变量上但不是在它们中的三个中它们一起变为0.如下面的例子中所示(最后一行)

A  B  C Total
10 10 10 30
NA NA NA NA
10 NA NA 10

到目前为止,我有:

data$Total <- A + B + C

干杯

1 个答案:

答案 0 :(得分:2)

data$Total2 <- rowSums(data[, c("A", "B", "C")])
data$Total2[rowSums(is.na(data[, c("A", "B", "C")])) %in% 1:2] <- 0
data
   A  B  C Total Total2
1 10 10 10    30     30
2 NA NA NA    NA     NA
3 10 NA NA    10      0

也许我误解了要求,已经指定的Total是希望的输出。在那种情况下:

data$Total3 <- rowSums(data[, c("A", "B", "C")], na.rm = TRUE)
data$Total3[rowSums(is.na(data[, c("A", "B", "C")])) == 3] <- NA
data
   A  B  C Total Total2 Total3
1 10 10 10    30     30     30
2 NA NA NA    NA     NA     NA
3 10 NA NA    10      0     10