在R中多条件跨多行过滤:筛选同时选‘否’与其他选项的参与者
解决多选问题的筛选需求
你的代码问题出在if_any的语法使用错误,正确写法需要把判断逻辑作为参数传入if_any函数,而非在外层单独加==1。以下是两种可行的修正方案:
方案一:使用if_any的正确语法
results <- survey_all %>% filter(child_tasks_2___0 == 1 & if_any(child_tasks_2___1:child_tasks_2___4, ~ . == 1))
这里~ . == 1表示对child_tasks_2___1到child_tasks_2___4的每一列,判断其值是否等于1;if_any只要其中任意一列满足条件就返回TRUE。
方案二:使用rowSums统计其他选项的勾选数量
results <- survey_all %>% filter(child_tasks_2___0 == 1 & rowSums(across(child_tasks_2___1:child_tasks_2___4), na.rm = TRUE) > 0)
这种方式通过rowSums计算每行中其他选项的总和,只要总和大于0,就说明至少勾选了一个其他选项。na.rm = TRUE用于处理可能存在的缺失值,避免计算出错。
针对你的示例数据,两种方案都会筛选出第1行和第4行的记录——这两行既勾选了“否”,又勾选了至少一个其他选项。
内容的提问来源于stack exchange,提问作者ph_researcher
相关产品推荐
相关产品推荐

