R:替换特殊字符

时间:2017-06-09 03:01:00

标签: r string replace special-characters gsub

我有一个数据框,如下面的特殊字符

Key  Q1   Q2
22   aSk   aÃ…Â k
23   aSk   aÃ…Â k
24   aSk   aÃ…Â k

我想在Q2中用“aSk”替换“... ... k”(包括k之间的空格),得到如下结果(与Q1相同)

Key  Q1   Q2 
22   aSk   aSk
23   aSk   aSk
24   aSk   aSk

我试过在R

中使用gsub函数
df$Q2 <- gsub("[Ã…Â]", "S", df$Q2) 

但是我无法移除“空格”并获得如下结果

Key  Q1   Q2 
22   aSk   aSSS k
23   aSk   aSSS k
24   aSk   aSSS k

我可以知道我的代码有什么问题吗?如何删除R中的“空格”和“SSS”?

(我在csv中的原始文件中的实际单词是“aÅk”。但是,它在R中显示为“aÃ...Âk”

感谢。

1 个答案:

答案 0 :(得分:1)

我们可以匹配一个或多个非alpbabets的字符,并将其替换为"S"

df$Q2 <- sub("[^A-Za-z]+", "S", df$Q2)
df$Q2
#[1] "aSk" "aSk" "aSk"

或者我们从字符串的开头(([A-Za-z]*)仅捕获字母字符作为一个组(*),匹配以下非字母字符并替换为反字符串的反向引用捕获组后跟"S"

sub("^([A-Za-z]*)[^A-Za-z]+", "\\1S", df$Q2)
#[1] "aSk" "aSk" "aSk"