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

如何在R语言中去除观测值'Don't Know'中的撇号

问题:无法将观测值'Don't Know'替换为'Dont Know'

我尝试了各种方法,但仍无法去除观测值'Don't Know'中的撇号,期望将其改为'Dont Know'。试过诸多相关方案,涉及多个变量修改,代码可运行但无实际效果。尝试过的代码如下:

# 尝试1:批量处理所有列
thesis <-  as.data.frame(sapply(thesis, function(doaway) gsub("'", "", doaway)))

# 尝试2:循环处理每一列
for(i in 1:ncol(thesis)){
  thesis[,i] <- gsub("'","",thesis[,i])
}

# 尝试3:针对单个列匹配替换(存在空格语法问题)
thesis$doaway[thesis $doaway== "Don\'t Know"] = "Dont Know"

# 尝试4:语法错误的匹配
thesis$doaway[thesis $doaway== "Don"\'\"t Know"] = "Dont Know"

# 尝试5:转义错误的匹配
thesis$doaway[thesis $doaway== "Don'\''t Know"] = "Dont Know"

无论针对单个观测值还是整个数据集,都无法完成该操作。


解决方案

1. 先排查列的数据类型

如果doaway列是因子类型,直接修改字符会因因子水平限制失效,先转为字符型:

# 转为字符型
thesis$doaway <- as.character(thesis$doaway)

2. 精准替换目标字符串

情况1:目标是普通单引号'

直接匹配替换:

# 方法A:全局替换该列所有单引号
thesis$doaway <- gsub("'", "", thesis$doaway)

# 方法B:仅替换特定字符串
thesis$doaway[thesis$doaway == "Don't Know"] <- "Dont Know"

情况2:目标是特殊单引号(如右单引号’)

有时候视觉上的单引号实际是编码不同的特殊字符,先查看字符编码确认:

# 提取含"Know"的唯一值,查看字符编码
charToRaw(unique(thesis$doaway)[grep("Know", unique(thesis$doaway))])

如果是右单引号,用对应字符替换:

# 替换右单引号
thesis$doaway <- gsub("’", "", thesis$doaway)

# 同时兼容两种单引号
thesis$doaway <- gsub("['’]", "", thesis$doaway)

3. 修复原代码的语法问题

原尝试3中thesis $doaway的空格会导致语法错误,去掉空格即可:

thesis$doaway[thesis$doaway == "Don't Know"] <- "Dont Know"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:45:44