You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按频率聚合字符串列?R语言DataFrame分组统计频次问题

错误原因说明

你此前的aggregate(df1$x ~ df1$y, df1, FUN = sum)代码不符合需求有两个核心原因:

  • 仅按y列分组,没有同时按x、y两列联合分组
  • 使用sum函数会对x列的数值做求和运算,而你需要的是每个分组的行数统计,应该用计数相关的函数

解决方案

方法1:基础R使用aggregate实现

# 写法1:指定双分组变量,用length统计每组行数
aggregate(. ~ x + y, df1, FUN = length)
# 如需固定输出列名,可调整为:
setNames(aggregate(. ~ x + y, df1, FUN = length), c("x", "y", "Frequency"))

方法2:基础R使用table实现

你提到的table函数可以直接实现需求,转成data.frame即可:

as.data.frame(table(df1, dnn = c("x", "y")), responseName = "Frequency")

方法3:dplyr包实现(语法更直观,推荐)

# 加载dplyr包
library(dplyr)

# 简洁写法,直接对多列计数
df1 %>%
  count(x, y, name = "Frequency")

# 逻辑更清晰的分组汇总写法
df1 %>%
  group_by(x, y) %>%
  summarise(Frequency = n(), .groups = "drop")

如果需要和你给出的示例结果顺序一致,可在上述代码后补充排序逻辑,比如dplyr写法后加%>% arrange(x, desc(y))即可。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:15:01