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

如何在R的data.table中统计chr列特定子串出现次数并生成新列

使用data.table统计子串出现次数
  • 先确保加载data.table包(未安装的话先执行安装命令):
install.packages("data.table")
library(data.table)
  • 核心处理代码,直接在你的dt上生成Occurrences列:
dt[, Occurrences := sapply(strsplit(Description, ","), function(x) sum(grepl("A18|A19", x)))]

代码逻辑拆解

  • strsplit(Description, ","):将每个Description字段按逗号分割成独立的子字符串向量
  • grepl("A18|A19", x):检查每个子字符串是否包含"A18"或"A19",返回对应的逻辑值(TRUE记为1,FALSE记为0)
  • sum(...):对每个拆分后的向量里的逻辑值求和,得到符合条件的子串数量
  • sapply:遍历所有行的拆分结果,把统计值赋值给Occurrences列

示例测试

如果用你提供的示例数据验证:

# 创建示例data.table
dt <- data.table(
  ID = 1:3,
  Date = c("2020-01-01", "2020-01-14", "2018-02-25"),
  Description = c("A1901,A1804,A2008,AB06", "A1402,A1805,A1902", "A1702"),
  Occurrences = NA
)

# 执行统计
dt[, Occurrences := sapply(strsplit(Description, ","), function(x) sum(grepl("A18|A19", x)))]

# 查看结果
print(dt)

运行后就会得到和你示例一致的Occurrences数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:05:15