我有一个带有“var1”...“var3”列的data.frame“数据”。现在,我想从三个 var 列中计算一个新列“sum”。不幸的是,在每一行中,三个变量中只有一个具有值:
var1 var2 var3 sum
NA NA 300 300
20 NA NA 20
10 NA NA 10
为了计算总和列,我是否必须先用 0 替换 NA,还是有更优雅的方法?谢谢!
我们可以用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")]