You need to enable JavaScript to run this app. R语言拆分data frame列内逗号分隔字符串并统计类别频次的实现
优惠活动
大模型
产品
解决方案
定价
更多

R语言拆分data frame列内逗号分隔字符串并统计类别频次的实现

R语言实现嵌套类别拆分与频次统计的常用方案

首先构造与示例完全匹配的测试数据框作为后续代码的运行基础:

df <- data.frame(
  Category = c("A", "A, B", "A, B, C", "B, C")
)

方法1:基础R原生实现(无额外依赖)

无需安装第三方包,通过内置函数即可完成全流程操作,适合快速临时分析场景:

# 按", "拆分所有单元格内容,展开为一维类别向量
all_categories <- unlist(strsplit(df$Category, split = ", "))
# 统计频次并转换为两列结构的数据框
freq_result <- as.data.frame(table(all_categories))
# 按需求调整列名
colnames(freq_result) <- c("Category", "Frequency")

该方法轻量无环境依赖,针对常规小体量数据集运行效率足够。

方法2:tidyverse生态实现(适配常规数据清洗流程)

是日常分析场景最常用的实现路径,流程可读性强,拆分后的结果可直接接入后续数据处理步骤:

library(dplyr)
library(tidyr)

freq_result <- df |>
  # 将单元格内的多类别值拆分为独立行
  separate_rows(Category, sep = ", ") |>
  # 按类别分组计算出现频次
  count(Category, name = "Frequency")

方法3:data.table实现(适配大数据量场景)

针对百万行级别的大体积数据集,该方法运行速度更快、内存占用更低:

library(data.table)

# 转换为data.table格式
dt <- as.data.table(df)
# 拆分并统计频次
freq_result <- dt[,
  .(Frequency = .N),
  by = .(Category = unlist(tstrsplit(Category, split = ", ")))
]

通用注意事项:如果实际业务数据中分隔符前后空格不统一(例如存在"A,B"无空格的写法),可将拆分分隔符替换为正则表达式",\\s*",匹配逗号后任意数量的空白字符,避免拆分错位、值识别失败的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 13:15:09