按组条件计数并创建新向量:统计无关联age的唯一ID数量
解决方案
这里提供几种在R中统计**所有对应age均为缺失值(NA)**的唯一id数量的方法:
方法1:使用dplyr包(tidyverse风格)
如果习惯tidyverse的语法,可以通过分组、过滤再计数:
library(dplyr) # 分组id,过滤出该组所有age都是NA的id,再统计数量 count_na_age_ids <- df %>% group_by(id) %>% filter(all(is.na(age))) %>% distinct(id) %>% nrow() print(count_na_age_ids) # 输出:3
方法2:使用Base R
不需要额外包的话,可以用by()函数或者aggregate()实现:
# 用by函数按id分组,判断每组age是否全为NA,再统计TRUE的数量 na_age_groups <- by(df$age, df$id, function(x) all(is.na(x))) count_na_age_ids <- sum(na_age_groups) print(count_na_age_ids) # 输出:3
或者用aggregate():
na_check <- aggregate(age ~ id, data = df, FUN = function(x) all(is.na(x))) count_na_age_ids <- sum(na_check$age) print(count_na_age_ids) # 输出:3
结果说明
示例数据中,id为b、e、g的所有age值都是NA,所以统计结果为3,符合预期。
内容的提问来源于stack exchange,提问作者CharlesLDN
相关产品推荐
相关产品推荐

