如何在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
相关产品推荐
相关产品推荐

