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

基于grep函数的文本挖掘:分类列生成问题技术问询

解决方案:生成推特数据的分类列

我来帮你搞定这个需求!根据你描述的场景,这里有个清晰的R代码解决方案,完全符合你的要求:

核心思路

我们先从已有的call、bill、location这些类别列中提取每行的有效关键词,再根据关键词数量决定是列出类别名称还是标记为other。

步骤1:定义类别列并提取有效关键词

首先,我们先把需要检查的类别列统一存到一个向量里,然后逐行提取非0的类别名称:

# 定义所有需要检查的类别列(如果后续加新类别,直接在这里加列名就行)
category_cols <- c("call", "bill", "location")

# 给数据框添加一个临时列,存储每行的有效类别列表
vdftweet$category_list <- apply(vdftweet[category_cols], 1, function(row) {
  # 筛选出当前行中不是"0"的类别名称
  row[row != "0"]
})

步骤2:生成最终的category_name列

接下来,我们根据临时列里的类别数量生成目标列:

vdftweet$category_name <- sapply(vdftweet$category_list, function(categories) {
  if (length(categories) > 3) {
    # 超过3个类别,标记为'other'
    "other"
  } else {
    # 不超过3个,用逗号连接类别名称
    paste(categories, collapse = ", ")
  }
})

步骤3:清理临时列(可选)

如果不需要保留临时的category_list列,可以直接删除:

vdftweet$category_list <- NULL

测试你的模拟数据

用你提供的模拟数据运行后,结果会是这样(整理成表格方便查看):

textcallbilllocationcategory_name
-the bill was not generated 0 bill 00bill0bill
-tried to raise the complaint 0 0 0000
-the location update failed 0 0 location00locationlocation
-the call drop has increased in my location call 0 locationcall0locationcall, location
-nobody in the location received bill,so call ASAP call bill locationcallbilllocationcall, bill, location

额外提示

  • 如果你的类别列里的0是数值型(不是字符型),记得把判断条件改成row[row != 0],避免类型不匹配的报错。
  • 要是后续新增了其他类别(比如你示例里的app),只需要把新列名加到category_cols向量里,代码就能自动适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:51:07