Сумма строк (с NA) в R
У меня есть data.frame "data" со столбцами "var1" ... "var3". Теперь я хотел бы вычислить новый столбец "сумма" из трех столбцов var. К сожалению, в каждой строке значение имеет только одна переменная из трех:
var1 var2 var3 sum
NA NA 300 300
20 NA NA 20
10 NA NA 10
Должен ли я сначала заменить NA на 0, чтобы вычислить столбец суммы, или есть более элегантный способ? Спасибо!
2 ответа
Решение
Мы можем использовать 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")]