【发布时间】:2019-10-12 19:42:13
【问题描述】:
我正在处理调查数据,我需要通过一堆多个响应变量进行过滤,准确地说是 543 个变量。
像这样成为我的数据:
Q1 <- c(1,0,1,1)
Q2 <- c(0,1,0,0)
Q3 <- c(1,1,1,0)
Q4 <- c(0,0,0,0)
Q5 <- c(1,0,0,0)
DT <- data.frame(Q1,Q2,Q3,Q4,Q5)
我想知道有多少人至少回答了一个问题,所以使用 dplyr 包的代码应该是:
MR <- DT %>%
filter(Q1 == 1 | Q2 == 1 | Q3 == 1 | Q4 == 1 | Q5 == 1 )
nrow(MR)
基本上,我试图避免编写从变量 1 到变量 543 的大量代码;像这样:
library(dplyr)
MR <- DT %>%
filter(Q1 == 1 | Q2 == 1 | Q3 == 1 | Q4 == 1 | Q5 == 1 | ... | Q543 == 1)
有没有更有效的方法来过滤这么多变量?
【问题讨论】:
-
我不清楚你所说的“有多少人至少回答了其中一个问题”是什么意思,因为这些是多个回答,你的意思是他们只给出了一个回答(回答的总和是 1)或他们至少给出了一个响应(响应的总和 >= 1)
-
另外请显示此示例数据的预期结果。
-
向每个向量添加第 5 个元素是否有意义,对于所有这些向量都是 0?否则你怎么知道代码是否有效。
-
@akrun 是的,
a,b,c,d,e我的意思是 Q1,...,Q5。我已经改了 -
@Elin 数据来自一项调查,其中人们将某些特征与几家公司联系起来。被调查者只回答了他们知道的那些公司(用之前的问题衡量),所以有些行只有零