首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试使用R中的dplyr创建函数以获取频率计数时,对变量进行分组时出错

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

Stack Overflow用户
提问于 2018-07-03 07:14:56
回答 1查看 26关注 0票数 1

我有一个数据集,如下所示

代码语言:javascript
复制
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))
)

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

代码语言:javascript
复制
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

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

我想我错误地使用了quo enquo。有没有人能告诉我哪里出错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-03 07:21:13

没有'count‘变量。它应该是'n‘。另外,'var_quo‘是一个quosure,而不是quosures。因此,可以使用!!对其进行评估

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51144738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档