如何在R中筛选至少完成3-4次有效调查的参与者数据框?
解决方法
你可以直接在filter()里用n()函数,它会返回当前分组的行数(也就是该参与者的有效响应次数),不用额外遍历统计,代码更简洁:
筛选至少完成3次有效调查的参与者
participant_sorted <- data %>% group_by(PARTICIPANT_ID) %>% drop_na(TODAY_VISUALSNOW_INTENSE, TODAY_TINNITUS_INTENSE) %>% filter(n() >= 3) %>% # 保留有效记录数≥3的分组 ungroup() # 取消分组,避免后续操作受分组属性影响
若需筛选至少完成4次的,修改条件即可:
filter(n() >= 4)
补充说明
drop_na()已经剔除了两个核心变量存在缺失的记录,所以分组后的n()就是该参与者的有效响应次数。- 最后添加
ungroup()是常规操作,能避免后续对整个数据框操作时因残留分组属性引发异常。
内容的提问来源于stack exchange,提问作者junioR
相关产品推荐
相关产品推荐

