我有一些行计数练习NA
。
这是一个包含 cat
和 id
变量的示例数据集。
df <- data.frame(cat=c("A","A","A","B","B","C","C","C","C"),
id = c(11,12,13,NA,NA,21,21,23,24))
> df
cat id
1 A 11
2 A 12
3 A 13
4 B NA
5 B NA
6 C 21
7 C 21
8 C 23
9 C 24
我想统计按 cat
分组的观察次数。
我试过了,但它也计算了 B 类的 NA
。
df.1 <- df %>%
group_by(cat) %>%
dplyr::summarise(freq=n())
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B 2
3 C 4
我怎样才能不计算 NA
并简单地在该单元格中分配 NA
,如下所示?
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B NA
3 C 4
最佳答案
在逻辑向量(!is.na(id)
或 complete.cases(id)
)上使用 sum
并替换 0使用 na_if
NA
library(dplyr)
df %>%
group_by(cat) %>%
summarise(freq = na_if(sum(!is.na(id)), 0))
-输出
# A tibble: 3 × 2
cat freq
<chr> <int>
1 A 3
2 B NA
3 C 4
关于r - 计算 r 中的有效行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70840828/