首页 > 解决方案 > 忽略 NA 的每个变量的 R-Count n

问题描述

我有以下数据结构:

id  val1 val2 val3
1   1     5    2 
1   2     7    5
2   2     2    NA
2   NA    4    NA
3   4     8    4
3   3     NA   4

我想计算每个变量的观察次数,不包括 NA 值。结果应该是这样的:

id  val1 val2 val3
1   2     2    2 
2   1     2    NA
3   2     1    2

我尝试了以下几行,但它不起作用:

df %>% 
  group_by(id) %>% 
  summarise_all(funs(n(., na.rm = TRUE)))

希望得到您的建议和建议。

标签: r

解决方案


您可以使用sum(!is.na(.))计算非 NA 值。

library(dplyr)
df %>% group_by(id) %>% summarise(across(.fns = ~sum(!is.na(.))))

#     id  val1  val2  val3
#  <int> <int> <int> <int>
#1     1     2     2     2
#2     2     1     2     0
#3     3     2     1     2

在基础 R 中:

aggregate(.~id, df, function(x) sum(!is.na(x)), na.action = 'na.keep')

推荐阅读