我正在努力将对话的文字记录读入 R 中。但是我遇到了特殊字符,如弯引号 en 和 em 破折号等。通常,我首先将 Microsoft 产品中的这些特殊字符替换为replace
. 通常我用纯文本替换特殊字符,但在某些情况下希望用其他字符替换它们(即我用 {} 替换“”)。这是乏味的,并不总是彻底的。如果我可以按原样将成绩单读入 R,然后使用 Encoding 将它们的编码转换为可识别的 unicode 格式,我可以将gsub
它们取出并用纯文本版本替换它们。但是,该文件以某种我不理解的方式读入。这是我的数据可能看起来的 xlsx:
http://dl.dropbox.com/u/61803503/test.xlsx
这是 .xlsx 文件中的内容
text num
“ ” curly quotes 1
en dash (–) and the em dash (—) 2
‘ ’ curly apostrophe-ugg 3
… ellipsis are uck in R 4
这可以读入R:
URL <- "http://dl.dropbox.com/u/61803503/test.xlsx"
library(gdata)
z <- read.xls(URL, stringsAsFactors = FALSE)
结果是:
text num
1 “ †curly quotes 1
2 en dash (–) and the em dash (—) 2
3 ‘ ’ curly apostrophe-ugg 3
4 … ellipsis are uck in R 4
所以我尝试使用Encoding
转换为Unicode:
iconv(z[, 1], "latin1", "UTF-8")
这给出了:
[1] "â\u0080\u009c â\u0080\u009d curly quotes" "en dash (â\u0080\u0093) and the em dash (â\u0080\u0094)"
[3] "â\u0080\u0098 â\u0080\u0099 curly apostrophe-ugg" "â\u0080¦ ellipsis are uck in R"
这使得 gsubing 不太有用。
我该怎么做才能将这些特殊字符转换为可区分的 unicode,以便我可以适当地将它们 gsub 出来?更明确地说,我希望z[1, 1]
阅读:
\u201C 2\u01D curly quotes
为了更清楚我想要的结果,我将从维基百科之类的页面中抓取表格:http ://en.wikipedia.org/wiki/Quotation_mark_glyphs并使用 unicode 参考图表适当地替换字符。所以我需要字符是 unicode 或某种标准格式,我可以系统地检查并替换字符。也许它已经是,我想念它。
PS 我不将文件保存为 .csv 或纯文本,因为特殊字符被替换为,?
因此如果您有更好的选择,read.xls
我不会附加到任何特定的文件读取方法(即) read.xls
.