【问题标题】:Sum of rows (with NA's) in RR中的行总和(带有NA)
【发布时间】:2018-04-13 22:45:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: r sum summarize


    【解决方案1】:

    我们可以使用rowSums

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

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

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

    【讨论】:

    • 谢谢!这就是我要找的东西!
    【解决方案2】:

    使用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")]
    

    【讨论】:

      猜你喜欢
      • 2020-12-23
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2017-06-12
      • 2013-11-25
      • 1970-01-01
      • 2020-04-04
      • 2016-02-21
      相关资源
      最近更新 更多