首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用家庭函数不适用于group_by(),但适用于select()

应用家庭函数不适用于group_by(),但适用于select()
EN

Stack Overflow用户
提问于 2020-10-08 11:58:10
回答 1查看 55关注 0票数 0

我是R的新手,面临着奇怪的问题。

我试图为每个字符变量创建多个情节,以计数退出变量。

df_churn

代码语言:javascript
复制
gender  geography exited
<chr>   <chr>     <fctr>

Female  France  Churn       
Female  Spain   Remain      
Female  France  Churn       
Female  France  Remain      
Female  Spain   Remain      
Male    Spain   Churn       
Male    France  Remain      
Female  Germany Churn       
Male    France  Remain      
Male    France  Remain

甚至在我开始在group_by()中绘图之前,我就发现了lapply()的错误。

代码语言:javascript
复制
  lapply(c("geography","gender"), FUN = function(feature){
    df_churn %>% 
      group_by(feature, exited) %>%
      count()
  })

如果使用的是select()而不是group_by(),那么它就能工作:

代码语言:javascript
复制
  lapply(c("geography","gender"), FUN = function(feature){
    df_churn %>% 
      select(feature, exited) %>% 
      head()
  })

#------------------output-------------#
geography exited
<chr>     <fctr>

France  Churn           
Spain   Remain          
France  Churn           
France  Remain          
Spain   Remain          
Spain   Churn


gender exited
<chr>  <fctr>

Female  Churn           
Female  Remain          
Female  Churn           
Female  Remain          
Female  Remain          
Male    Churn

如何为group_by()修复这个问题?

我无法理解apply的家庭工作,以及enquousrlang/ functional programming在r中的工作,这会使重复工作更容易。相反,这一切有时真的让人沮丧,

也将感谢任何良好的学习链接,以及他们。

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 12:12:37

您的代码使用select而不是group_by的原因是select使用字符值,而不是group_by

  1. 修复此使用sym!! :

代码语言:javascript
复制
library(dplyr)

lapply(c("geography","gender"), FUN = function(feature){
  df_churn %>% 
    group_by(!!sym(feature), exited) %>%
    count()
})

  1. .data :

代码语言:javascript
复制
lapply(c("geography","gender"), FUN = function(feature){
  df_churn %>% 
    group_by(.data[[feature]], exited) %>%
    count()
})

  1. across :

代码语言:javascript
复制
lapply(c("geography","gender"), FUN = function(feature){
  df_churn %>% 
    group_by(across(c(feature, "exited"))) %>%
    count()
})

  1. get :

代码语言:javascript
复制
lapply(c("geography","gender"), FUN = function(feature){
  df_churn %>% 
    group_by(get(feature), exited) %>%
    count()
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64262036

复制
相关文章

相似问题

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