R 中的行总和(带有 NA)

Sum of rows (with NA's) in R

我有一个 data.frame "data" 列 "var1" ... "var3"。现在,我想从三个可变列中计算一个新列 "sum"。不幸的是,在每一行中,三个变量中只有一个有值:

var1  var2  var3  sum
NA    NA    300   300
20    NA    NA     20
10    NA    NA     10

我是否必须先将 NA 替换为 0 才能计算和列,还是有更优雅的方法?谢谢!

我们可以使用rowSums

df1$sum <- rowSums(df1[grep("^var\d+", names(df1))], na.rm = TRUE)

此外,如果只有一个非 NA 元素,另一种选择是

do.call(pmax, c(df1[1:3], na.rm = TRUE))

使用data.table,你也可以试试:

df <- data.frame(var1 = c(NA, 20, 10),
                 var2 = c(NA, NA, NA),
                 var3 = c(300, NA, NA))
library(data.table)
dt <- as.data.table(df)
dt[, sum := rowSums(.SD, na.rm = TRUE), .SDcols = c("var1", "var2", "var3")]