Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于多个条件和变量的过滤器_R_Filter_Dplyr - Fatal编程技术网

R 基于多个条件和变量的过滤器

R 基于多个条件和变量的过滤器,r,filter,dplyr,R,Filter,Dplyr,我正在处理调查数据,我需要通过一组多个响应变量进行过滤,精确地说是543个变量 我的数据如下: Q1有多种方法可以做到这一点。一个选项是filter\u,在这里我们指定要选择的变量,其中一个select\u helpers匹配-以“^”开头的列名,后跟一个或多个数字\\d+,直到字符串的结尾$,并使用任何变量创建逻辑。它使列中至少有一个值的行等于1 library(dplyr) DT %>% filter_at(vars(matches("^Q\\d+$")), any_vars(.

我正在处理调查数据,我需要通过一组多个响应变量进行过滤,精确地说是543个变量

我的数据如下:


Q1有多种方法可以做到这一点。一个选项是filter\u,在这里我们指定要选择的变量,其中一个select\u helpers匹配-以“^”开头的列名,后跟一个或多个数字\\d+,直到字符串的结尾$,并使用任何变量创建逻辑。它使列中至少有一个值的行等于1

library(dplyr)
DT %>%
   filter_at(vars(matches("^Q\\d+$")), any_vars(.==1))
或者使用map和reduce。我们使用map循环遍历所选列,创建一个逻辑向量,并使用|将其缩减为单个逻辑向量。这可以在筛选器中用于筛选行

library(purrr)
DT %>%
   filter(map(select(., matches("^Q\\d+$")), `==`, 1) %>% 
             reduce(`|`))
或者另一种方法是行和


有多种方法可以做到这一点。一个选项是filter\u,在这里我们指定要选择的变量,其中一个select\u helpers匹配-以“^”开头的列名,后跟一个或多个数字\\d+,直到字符串的结尾$,并使用任何变量创建逻辑。它使列中至少有一个值的行等于1

library(dplyr)
DT %>%
   filter_at(vars(matches("^Q\\d+$")), any_vars(.==1))
或者使用map和reduce。我们使用map循环遍历所选列,创建一个逻辑向量,并使用|将其缩减为单个逻辑向量。这可以在筛选器中用于筛选行

library(purrr)
DT %>%
   filter(map(select(., matches("^Q\\d+$")), `==`, 1) %>% 
             reduce(`|`))
或者另一种方法是行和

一个衬垫的底部R:

DT[c(sort(unique(unlist(lapply(DT, function(x){which(x==1)}))))),]
一个衬垫的底部R:

DT[c(sort(unique(unlist(lapply(DT, function(x){which(x==1)}))))),]

我不清楚你所说的有多少人回答了至少一个问题是什么意思,因为这些问题是多个回答。你的意思是说,他们只给出了一个回答,回答的总和是1,还是他们给出了至少一个回答,回答的总和是>=1。另外,请显示此示例的预期结果另外,给每个向量加上第五个元素,所有向量都为0,这有意义吗?否则你怎么知道代码是否有效。@akrun是的,用a,b,c,d,e我是说Q1,…,Q5。我已经改变了it@Elin这些数据来自一项调查,人们将某些特征与几家公司联系起来。被调查者只回答了那些他们知道的公司,并用之前的问题进行了衡量,所以有一行只有零。我不清楚你说的有多少人回答了至少一个问题是什么意思,因为这些是多个回答。你的意思是说他们只给出了一个回答,回答的总和是1,还是说他们给出了至少一个回答,回答的总和是>=1。另外,请显示答案此示例数据的预期结果。对于所有向量,为每个向量指定第五个元素(即0)是否有意义?否则你怎么知道代码是否有效。@akrun是的,用a,b,c,d,e我是说Q1,…,Q5。我已经改变了it@Elin这些数据来自一项调查,人们将某些特征与几家公司联系起来。被调查者只回答了那些他们知道的公司,这些公司是用前面的问题来衡量的,所以有几行只有零