我想创建一个循环,它将执行相同的基本操作,但是跨变量列表。问题是group_by语句是逐字读取我的循环变量名,而不是解析变量的不同级别。我认为根源是输入需要是一个列名,但我很难做到这一点......
如果我想特别查看c_2,此代码适用:
Data <- Actual.Data.A %>%
filter(!is.na(c_2)) %>%
group_by( c_2 , Year , a_2) %>%
summarise(N = n())
将提供类似这样的内容:
c_2 Year a_2 N
0 times 2013 Male 254
1 time 2013 Male 153
0 times 2013 Female 300
1 time 2013 Female 120
... ... ... ...
当我将相似的代码放在for循环中时,它不会给出不同级别的c_2。
例如,这是我的循环:
question.list <- as.list(c("c_2",
"b_2"))
for (question in question.list) {
Data <- Actual.Data.A %>%
filter(!is.na(question)) %>%
group_by( question , Year , a_2) %>%
summarise(N = n())
}
这会给我一个错误说:
Error: unknown column 'question'
所以我尝试使用paste(),如下所示:
question.list <- as.list(c("c_2",
"b_2"))
for (question in question.list) {
Data <- Actual.Data.A %>%
filter(!is.na(question)) %>%
group_by( paste(question) , Year , a_2) %>%
summarise(N = n())
}
它会给我这样的东西:
paste(question) Year a_2 N
b_2 2014 Male (a value)
b_2 2014 Female (a value)
b_2 ... ... ...
b_2 ... ... ...
这显然不是我想要的:)
我已经尝试了各种各样的组合,而且我正处于我(无论如何)对循环理解的极限。我已经尝试过paste(),call(),get(),quote(),print(),我无法弄清楚如何将问题变量粘贴为group_by语句的列名。我也试过了一些组合,但我根本想不出来。