R语言如何统计字符列预设词汇频次并新增统计结果列
实现方案
基于Python + pandas处理,全程3步就能搞定:
- 第一步:导入依赖、读取数据,筛出词典里所有绿色词汇
先把词典里Polarity == 1的目标词统一转小写存成列表,避免大小写差异导致漏匹配,大样本场景可以提前预编译匹配规则提升运行速度:import pandas as pd import re # 替换成你自己的文件实际路径 post_df = pd.read_csv("post_dataset.csv") lexicon_df = pd.read_csv("green_lexicon.csv") # 提取所有绿色词汇,统一转小写 green_word_list = lexicon_df[lexicon_df["Polarity"] == 1]["Word"].str.lower().tolist() # 预编译所有词的正则匹配规则,减少重复计算 pattern_map = {word: re.compile(rf'\b{re.escape(word)}\b') for word in green_word_list} - 第二步:写单条帖子的计数逻辑
用正则做整词匹配,避免把包含目标词片段的长单词误统计,比如匹配"solar"的时候不会把"solaris"里的词片段算入结果:def calc_green_count(post_text): text = str(post_text).lower() count = 0 for word, pattern in pattern_map.items(): count += len(pattern.findall(text)) return count - 第三步:给原数据集新增统计列
直接对Post列逐行应用计数函数,生成的新列就是每条帖子的绿色词汇总出现次数:post_df["green_word_total"] = post_df["Post"].apply(calc_green_count) # 处理完成后导出保存即可 post_df.to_csv("post_with_green_count.csv", index=False)
适配提示:如果你的帖子/词汇是中文,把正则整词匹配的逻辑换成直接字符串计数就行,也就是把计数部分改成
count += text.count(word),不需要用\b做英文单词边界判断。
附参考样例:
原数据集样式:
匹配用词典样式:
内容的提问来源于stack exchange,提问作者Sarah K.
相关产品推荐
相关产品推荐

