我有城市名称的数据,伦敦,伦敦,纽约,纽约等。
但我也有<c3><U+119B>London, M<c3><U+1193>New York
形式的数据,为了让事情变得复杂一点,我的行包含London<c3><U+1193>OL, Sydney<c3><U+0087>NL and London(Westminster)
等值,Alicante / ALACANT也在数据集中也有西班牙语重音符号Coloma de Cervellò, La Riera de Gaià, Sant Vicen <c3><U+0087> Dels Horts
。
所以我只想清理这一栏。
有人可以指出我正确的方向如何删除部分列,例如
<c3><U+119B>London to London
Sydney<c3><U+0087>NL to Sydney
提前致谢
答案 0 :(得分:0)
如果您有数据集中希望找到的所有城市的列表,我会这样做:
goodNames <- c("London", "Alicante", "Sydney")
badNames <- c("London(Westminster)", "Alicante/ALACANT", "SydneyNL")
newNames <- badNames
for (i in c(1:length(goodNames))){
newNames[grepl(goodNames[i], badNames)] <- goodNames[i]
}
这样做是为了遍历goodNames向量中的每个好的城市名称,并检查是否可以在每个坏名称中找到该名称(例如,“Syndey”出现在“SydneyNL”中)。如果是,则将坏名称替换为好名称。查看grep()文档,有很多有用的选项,比如匹配是否区分大小写。
如果你没有适当拼写的城市列表,那么你可能需要进行大量的调整。阅读grep()以及grep()文档中列出的相关函数。如果你觉得它太混乱了,那么最简单的方法就是这样:
df <- data.frame(city=badNames, stringsAsFactors= FALSE)
df$city[df$city == "SydneyNL"] <- "Sydney"
df$city[df$city == "London(Westminster)"] <- "London"
答案 1 :(得分:0)
这是考虑这样做的一种方式:
bad <- "<c3><U+119B>London"
good <- gsub("\\<[^\\]]*\\>", "", bad, perl=TRUE);
good
[1] "London"
这会删除包含<>
和<
>
之间的所有字符