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

R语言统计Excel列字符串出现次数:解决单引号匹配差异问题

让R字符串的单引号同时匹配两种引号字符的实现方案

由于数据中存在两种单引号(普通单引号'和弯单引号’),而定义匹配字符串时只能使用普通单引号,导致str_count无法匹配到带弯单引号的目标内容。以下是无需修改原始数据的解决方法:

方法一:正则替换匹配字符串(stringr实现)

将匹配字符串中的普通单引号'替换为正则表达式[’'],该表达式可匹配两种单引号中的任意一种。

library(stringr)

# 原始匹配字符串数组
string.arr =  c(
    "I can't handle this.",
    "I shouldn't be this stressed out."
)

# 转换为支持双引号匹配的正则模式
pattern.arr = str_replace_all(string.arr, "'", "[’']")

# 统计每个模式的出现次数
counts = sapply(pattern.arr, function(pattern) {
  sum(str_count(deidentified_data_text_df$col_name, pattern), na.rm = TRUE)
})

# 输出统计结果
print(counts)

如果匹配字符串中包含.、*等正则特殊字符,建议先转义这些字符再替换单引号,避免正则语法干扰:

# 先转义正则特殊字符,再替换单引号
pattern.arr = str_replace_all(str_escape(string.arr), "'", "[’']")

方法二:Unicode属性匹配(stringi实现)

利用Unicode字符属性\\p{APOSTROPHE}匹配所有类型的单引号(包括'和’),该方法更通用,可覆盖更多特殊单引号类型:

library(stringi)

# 转换匹配字符串,将普通单引号替换为Unicode撇号属性
pattern.arr = stri_replace_all(string.arr, "\\p{APOSTROPHE}", fixed("'"))

# 统计每个模式的出现次数
counts = sapply(pattern.arr, function(pattern) {
  sum(stri_count(deidentified_data_text_df$col_name, regex = pattern), na.rm = TRUE)
})

# 输出统计结果
print(counts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:21