You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用dplyr按字符型列分组数据框报错,求解决方法

解决dplyr按字符型列分组的错误

嘿,我来帮你搞定这个分组出错的问题!

你遇到的错误根源很明确:你把单个字符型列向量(frazy_i_lp_new_Full$lp)直接传给了group_by(),但group_by()的设计是要作用在整个数据框上的,不是单独的列,所以才会抛出“no applicable method for 'group_by_' applied to an object of class 'character'”这个报错。

正确的写法有这几种:

1. 用管道符的标准写法(推荐)

把整个数据框通过管道传递给group_by(),直接指定列名即可,字符型列完全没问题:

abc1 <- frazy_i_lp_new_Full %>%
  group_by(lp) %>%
  summarise(wysz = sum(`ilośc wyszukań`))

管道符%>%会自动把左边的数据框作为第一个参数传给右边的group_by(),这样函数就能正确识别数据框里的列,不管类型是字符、数值还是因子。

2. 不用管道的写法

如果不习惯用管道,也可以直接把数据框作为group_by()的第一个参数:

abc1 <- summarise(group_by(frazy_i_lp_new_Full, lp), wysz = sum(`ilośc wyszukań`))

3. 动态指定列名的场景(如果列名是变量)

要是你需要用字符变量来动态指定分组列(比如列名存在某个变量里),可以用.data代词或者group_by_at()

# 用.data代词
target_col <- "lp"
abc1 <- frazy_i_lp_new_Full %>%
  group_by(.data[[target_col]]) %>%
  summarise(wysz = sum(`ilośc wyszukań`))

# 或者用group_by_at()
abc1 <- frazy_i_lp_new_Full %>%
  group_by_at(target_col) %>%
  summarise(wysz = sum(`ilośc wyszukań`))

只要确保group_by()接收的是完整数据框,而不是单独的列向量,就能顺利按字符型列完成分组啦。

内容的提问来源于stack exchange,提问作者Sebastian

火山引擎 最新活动