【问题标题】:Count the number of non-NA numeric values of each row in dplyr计算 dplyr 中每一行的非 NA 数值的数量
【发布时间】:2018-06-17 23:06:32
【问题描述】:

我创建了一个数据框 df。

df <- data.frame (id = 1:10, 
    var1 = 10:19,
    var2 = sample(c(1:2,NA), 10, replace=T),
    var3 = sample(c(3:5, NA), 10, replace=T))

我需要的是一个新列 var4,它计算每行的非 NA 值的数量(不包括 id 列)。例如,如果一行是 var1=19, var2=1, var3=NA, 那么 var4=2。我找不到在 dplyr 中执行此操作的好方法。 类似:

df %in% mutate(var4= ... )

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 在基础 R 中:df$var4 &lt;- rowSums(!is.na(df[-which(names(df)=="id")]))

标签: r dplyr na


【解决方案1】:

使用select + is.na + rowSums, select(., -id) 返回排除id的原始数据框(.),然后用rowSums(!is.na(...))计算非NA值的数量:

df %>% mutate(var4 = rowSums(!is.na(select(., -id))))

#   id var1 var2 var3 var4
#1   1   10   NA    4    2
#2   2   11    1   NA    2
#3   3   12    2    5    3
#4   4   13    2   NA    2
#5   5   14    1   NA    2
#6   6   15    1   NA    2
#7   7   16    1    5    3
#8   8   17   NA    4    2
#9   9   18   NA    4    2
#10 10   19   NA   NA    1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2017-06-10
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    相关资源
    最近更新 更多