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

使用dplyr统计R数据框列值出现次数并新增对应频率列的方法

你之前收到报错是因为count()是dplyr中用于统计分组行数并返回聚合结果的函数,作用对象是数据框,不能直接对字符类型的Code列单独调用,所以会触发类不匹配的报错。

dplyr 优先解决方案

方案1:直接调用add_count()

这是dplyr针对「保留原数据结构新增分组计数字段」场景封装的专用函数,代码最简洁:

library(dplyr)
result <- x %>%
  add_count(Code, name = "Code_frequency")

如果不指定name参数,默认生成的计数字段名为n。

方案2:分组后结合mutate()和n()

如果你需要复用分组逻辑,可以用标准分组写法实现:

library(dplyr)
result <- x %>%
  group_by(Code) %>%
  mutate(Code_frequency = n()) %>%
  ungroup()

操作完成后调用ungroup()取消数据的分组属性,避免后续对该数据框的其他操作受分组规则影响。

其他实现思路

基础R原生实现

无需加载任何第三方包,用ave()函数实现分组计数:

x$Code_frequency <- ave(x$Code, x$Code, FUN = length)

data.table 大表优化实现

如果你的数据量较大,data.table的运算效率会显著高于dplyr:

library(data.table)
# 转换为data.table格式
setDT(x)
# 按Code分组新增计数列
x[, Code_frequency := .N, by = Code]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:00:04