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

R语言:从含列表结构的单列数据生成标签词频表问题与解决

正确统计列表格式标签列的频率(优化R实现)

我注意到你用qdap的freq_terms()处理数据集中的列表结构标签列时没有得到正确结果——这是因为你的tags列是字符串化的列表格式(比如类似c("tag1", "tag2")的文本),freq_terms()没法直接解析这种格式的内容。下面是基于Rui方案优化后的完整解决方案,我会一步步给你拆解逻辑:

完整优化代码

# 先加载tidyverse包(包含dplyr等实用工具)
library(tidyverse)

# 读取你的数据集(你原来的读取逻辑可以保留)
tags_df <- read.csv(file.choose())

# 1. 拆分字符串并剥离无效语法字符
sp <- unlist(strsplit(as.character(unlist(tags_df$tags)), '^c\\(|,|"|\\)'))

# 2. 过滤空值和无效字符串
inx <- sapply(sp, function(y) nchar(trimws(y)) > 0 & !is.na(y))

# 3. 生成统一小写的标签频率表
data <- as_data_frame(table(tolower(sp[inx])))

# 4. 按频率降序排序
data <- data[with(data, order(-n)), ]

# 5. 提取频率最高的前10个标签
data <- data[1:10, ]

代码逻辑拆解

  • 步骤1:用正则表达式^c\\(|,|"|\\)精准匹配并拆分字符串——它会识别并去除列表语法里的c(、逗号、双引号和),把每个标签单独拆分出来;unlist则把嵌套的列表结构扁平化,方便后续处理。
  • 步骤2:通过sapply遍历拆分后的元素,只保留去掉前后空格后长度大于0且非NA的有效标签,避免空字符串干扰统计结果。
  • 步骤3:用table()统计每个标签的出现次数,tolower()统一把标签转为小写(避免"TagA"和"taga"被当成不同标签),最后转为tidy格式的数据框,方便后续排序和筛选。
  • 步骤4:按频率列n降序排序,让高频标签排在最前面,更直观。
  • 步骤5:提取前10个高频标签,聚焦最核心的标签分布。

这个方案解决了freq_terms()无法解析字符串化列表的问题,先做数据清洗再统计,结果会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:17:05