R使用dplyr按id分组基于na_count添加evidence阈值标记列
实现方案
核心逻辑
每行q1至q5共5个字段,na_count为每行对应列的NA数量,因此每行非NA值数量为5 - na_count,按id分组后对该值求和,即可得到单id跨所有行的非NA值总数量,再与阈值比较生成标记列即可。
代码实现
library(dplyr) # 可自行调整阈值 min_threshold <- 10 df <- df %>% group_by(id) %>% mutate(evidence = ifelse(sum(5 - na_count) >= min_threshold, "yes", "no")) %>% ungroup() # 不需要保留分组结构可保留该行
验证计算(阈值10场景)
各id非NA值总和计算如下,与示例输出完全匹配:
- id=7:(5-3)+(5-1)+(5-3) = 8 <10 → 标记no
- id=9:(5-0)+(5-1)+(5-0)+(5-1)=18 ≥10 → 标记yes
- id=3:(5-3)+(5-1)=6 <10 → 标记no
- id=1:(5-2)+(5-2)+(5-3)=8 <10 → 标记no
- id=2:(5-4)+(5-2)+(5-1)+(5-1)+(5-0)=17 ≥10 → 标记yes
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

