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

如何统计R语言数据框单元格内特定字符串的多次出现次数

统计数据框中逗号分隔字符串的特定值出现次数

你的数据框speech_N_rows结构如下:

#    channel start.time stop.time    vp id              overlaps
# 1:       A      0.000     9.719     N  1             A:EE, C:N
# 2:       A      9.719    11.735     N  2     A:N, D:other, A:N
# 3:       C      0.264     2.032     N  3                   A:N
# 4:       B     26.514    28.264     N  4            B:CH1, D:N
# 5:       D     82.316    82.702     N  5          C:CH2, B:CH2
# 6:       D     10.354    11.666     N  6         A:EE, A:other
# 7:       C     80.251    82.719   CH2  7         D:self, B:CH2
# 8:       B     27.564    30.819   CH1  8            B:CH1, D:N
# 9:       D     25.621    27.693     N  9          B:CH1, B:CH1
#10:       A     10.354    11.666 other 10         A:EE, D:other
#11:       B     80.251    82.719   CH2 11         D:self, C:CH2
#12:       B     61.564    64.819   CH1 12                   A:N
#13:       A     60.621    62.693     N 13                 B:CH1

当前用grep只能统计包含"A:N"的行数(结果为3),但实际"A:N"总共出现4次(第2行包含2次),以下是两种可行的解决方案:

方法1:基础R实现

通过拆分字符串后逐一匹配统计:

# 将overlaps列的所有内容按逗号(含后续空格)拆分,转为一维向量
all_overlaps <- unlist(strsplit(speech_N_rows$overlaps, ",\\s*"))
# 统计"A:N"的总出现次数
sum(all_overlaps == "A:N")
# 输出结果:[1] 4

方法2:使用stringr包(tidyverse生态)

直接统计每个单元格内目标字符串的出现次数再求和:

library(stringr)
# 统计每个单元格中"A:N"的出现次数,汇总总数
sum(str_count(speech_N_rows$overlaps, fixed("A:N")))
# 输出结果:[1] 4

注:fixed("A:N")用于避免冒号被当作正则表达式元字符,确保精确匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:20:12