簡體   English   中英

R中的行總和(帶有NA)

[英]Sum of rows (with NA's) in R

我有一個data.frame“ data”,其列為“ var1” ...“ var3”。 現在,我想從三個var列中計算一個新列“ 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")]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM