【问题标题】:Error in grouping variable trying to create a function to get frequency counts using dplyr in R尝试在 R 中使用 dplyr 创建函数以获取频率计数时对变量进行分组时出错
【发布时间】:2018-07-02 23:14:56
【问题描述】:

我有一个看起来像这样的数据集

df1 <- data.frame (
age = rep(c("40-44", "45-49", "50-54", "55-59", "60-64"),4),
dep = rep(c("Dep1", "Dep2", "Dep3", "Dep4", "Dep5"),4),
ethnic_1 = c(rep("M",4),rep("NM",7),rep("P", 3), rep("A", 6)),
ethnic_2 = c(rep("M",8),rep("NM",6),rep("P",2),rep("A", 4)),
gender = c(rep("M",10), rep("F",10))
)

我想做的是通过创建和运行以下函数来比较这些数据框中的两个种族分类

Comp_fun <- function(data, var1, ...) {

group_var <- quos(...)

var_quo <- enquo(var1)

df <- data %>% 
 group_by(!!! group_var) %>%
 summarise (n = n()) %>%
 spread(key = !!! var_quo, value = count)

return(df)
}

eth_comp <- Comp_fun(df1, ethnic_1, ethnic_1, ethnic_2)

当我运行此代码时,我收到以下错误消息Error: Invalid column specification

我想要的输出是一个 4 x 4 的表格,水平显示种族 1 的计数,垂直显示种族 2 的计数,并显示它们匹配的数字和不匹配的数字'吨。

我认为我错误地使用了 quo enquo。谁能告诉我哪里出错了?

【问题讨论】:

    标签: r function dplyr


    【解决方案1】:

    没有“计数”变量。它应该是'n'。此外,'var_quo' 是 quosure 而不是 quosures。所以,可以用!!进行评估

    Comp_fun <- function(data, var1, ...) {
    
      group_var <- quos(...)
    
      var_quo <- enquo(var1)
    
      data %>% 
        group_by(!!! group_var) %>%
        summarise (n = n()) %>%
        spread(key = !! var_quo, value = n)
    
    
    }
    
    eth_comp <- Comp_fun(df1, ethnic_1, ethnic_1, ethnic_2)
    eth_comp
    # A tibble: 4 x 5
    #  ethnic_2     A     M    NM     P
    #  <fct>    <int> <int> <int> <int>
    #1 A            4    NA    NA    NA
    #2 M           NA     4     4    NA
    #3 NM          NA    NA     3     3
    #4 P            2    NA    NA    NA
    

    【讨论】:

    • 谢谢。运行您的代码版本时,我仍然收到相同的错误消息。 Error: Invalid column specification
    • @Laura 检查您是否正确复制了所有内容——我运行 akrun 的代码没有错误
    • @Laura 我正在使用rlang_0.2.1dplyr_0.7.5 我不确定您为什么会收到错误消息。此外,camille 无法复制错误
    • @Laura 你有什么问题?
    • 我仍然没有确定我的问题。我想也许我们在工作中使用了旧版本的 R 或其他东西。非常感谢您的帮助。
    猜你喜欢
    • 2023-02-21
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多