对变量进行分组时出错,尝试创建函数以使用 R 中的 dplyr 获取频率计数



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

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 的计数,并显示它们匹配和不匹配的数字。

我想我错误地使用了quoenquo。谁能告诉我哪里出错了?

没有"count"变量。 它应该是"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

最新更新