从列名中删除unicode符号

时间:2014-07-17 15:03:04

标签: r

我试图通过使用XML包从fifa.com获取一些统计信息。导入成功但列名称具有unicode符号。我想删除这些符号。

这就是我获取数据的方式,

library(XML)
url <- "http://www.fifa.com/worldcup/statistics/teams/disciplinary.html"
foulbycountry <- readHTMLTable(url)
foulbycountry1 <- do.call(rbind.data.frame, foulbycountry)

变量名称包含我要删除的两个字符。我试图创建一个新对象,但它无法正常工作。例如,

country <- foulbycountry1$Teams▴▾
fouls.committed <- foulbycountry1$Fouls Committed▴▾

给出了以下输出,

> country <- foulbycountry1$Teams▴▾
Error: unexpected input in "country <- foulbycountry1$Teams�"
> fouls.committed <- foulbycountry1$Fouls Committed▴▾
Error: unexpected symbol in "fouls.committed <- foulbycountry1$Fouls Committed"

有什么方法可以建议我删除那些额外的unicode字符吗?

2 个答案:

答案 0 :(得分:2)

iconv是一种选择......

names(foulbycountry1) <- iconv(names(foulbycountry1), to='ASCII', sub='')
names(foulbycountry1)
# [1] "Teams"                           "Teams"                           "Matches Played"                 
# [4] "Yellow Card"                     "Second yellow card and red card" "Red Cards"                      
# [7] "Fouls Committed"                 "Fouls Suffered\r\n"              "Fouls causing a penalty"    

这将删除所有非ASCII字符。其中一列在其末尾有换行符。要删除这些,您也可以使用

gsub('\r|\n', '', iconv(names(foulbycountry1), to='ASCII', sub=''))

答案 1 :(得分:1)

如果您只想在列名中保留可打印的ASCII字符,可以使用

names(foulbycountry1) <- gsub("[^\x20-\x7F]","",names(foulbycountry1))

您可以找到字符代码列表here。在这里,我们使用\x00语法指定十六进制值。