R - 在for循环中使用dplyr group_by,循环其中一个group_by变量

时间:2016-10-14 18:15:21

标签: r loops dplyr grouping

我想创建一个循环,它将执行相同的基本操作,但是跨变量列表。问题是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语句的列名。我也试过了一些组合,但我根本想不出来。

0 个答案:

没有答案