我有一个数据框,如下面的特殊字符
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”
感谢。
答案 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"