基于多个条件在R中跨多行筛选

ivqmmu1c  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(119)

在我的数据集中,我有一个选择所有问题,其中"否"是一个回答。我希望能够确定是否有任何参与者单击了"否"(child_tasks_2___0),然后单击了另一个答案。
以下是一些数据:

child_tasks_2___0 child_tasks_2___1 child_tasks_2___2 child_tasks_2___3 child_tasks_2___4 
1                  0                 1                 0                    
0                 0                 
2                  1                 1                 0                 0                 0                 
3                  1                 0                 0                 0                 0                 
4                  1                 0                 0                 1                 1                 
5                  1                 0                 0                 0                 0

我试了这个代码:

results <- survey_all %>% 
  filter(child_tasks_2___0==1 &
         if_any (child_tasks_2___1:child_tasks_2___4)== 1)

但是,它仅过滤掉子任务2___0 == 1

bxgwgixi

bxgwgixi1#

如果行中的任何列中存在任何非0值,则if_any(cols)将始终返回TRUE。如果要与特定值进行比较,请使用lambda表达式在每列中进行比较在OP的代码中,if_any返回所有TRUE,然后当它与1比较时,它执行TRUE == 1,当1被强制为TRUE时,TRUE == 1返回TRUE

library(dplyr)
survey_all %>% 
   filter(child_tasks_2___0==1 & 
    if_any(child_tasks_2___1:child_tasks_2___4, ~ .x== 1))

相关问题