计算dplyr

时间:2018-01-08 23:03:47

标签: r dplyr

我创建了一个数据帧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= ... )

我很感激有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

使用select + is.na + rowSumsselect(., -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