在R语言中统计指定单词集出现次数并生成得分列
统计指定单词出现次数生成得分列的解决方案
针对你的需求——统计每行Col1中Mon、Tues、Wed三个单词的出现次数并生成得分列,我整理了两种常用工具的实现方法:
方法一:使用Excel公式实现
假设你的Col1数据在A列,从A2开始(A1是表头),可以在B2单元格输入以下公式,然后下拉填充到所有行:
=SUMPRODUCT(--(ISNUMBER(MATCH(TEXTSPLIT(A2, ","), {"Mon","Tues","Wed"}, 0))))
公式拆解:
TEXTSPLIT(A2, ","):把A2单元格的文本按逗号拆分成单个单词的数组MATCH(..., {"Mon","Tues","Wed"}, 0):检查每个拆分后的单词是否在目标集合里,匹配成功返回位置,失败返回错误值ISNUMBER(...):把匹配结果转成布尔值(匹配成功为TRUE,失败为FALSE)--(...):将布尔值转换成1或0(TRUE→1,FALSE→0)SUMPRODUCT:对所有1和0求和,得到该行的最终得分
用这个公式就能得到你预期的结果:3、3、3、2、0。
方法二:使用Python Pandas实现
如果用Python处理数据,Pandas可以快速完成这个任务,代码示例如下:
import pandas as pd # 构造你的数据集 data = { 'Col1': ['Mon,Tues,Wed,Thurs,Fri', 'Mon,Tues,Wed,Thurs', 'Mon,Tues,Wed', 'Mon,Tues', 'Thurs'] } df = pd.DataFrame(data) # 定义需要统计的目标单词集合 target_words = {'Mon', 'Tues', 'Wed'} # 生成得分列 df['Score'] = df['Col1'].apply( lambda x: sum(1 for word in x.split(',') if word.strip() in target_words) ) # 输出结果 print(df)
代码说明:
x.split(','):把每行的Col1文本按逗号拆分成单词列表word.strip():去除单词前后可能存在的空格(避免因空格导致匹配失败)sum(1 for ...):遍历拆分后的单词,统计属于目标集合的数量- 最终生成的
Score列就是你需要的得分
运行这段代码后,输出的DataFrame会包含你预期的得分列。
内容的提问来源于stack exchange,提问作者glor
相关产品推荐
相关产品推荐

