【发布时间】:2016-06-29 11:33:05
【问题描述】:
我正在研究字符编码如何影响排序。我的问题是:
如何将数据帧的单列更改为不同的字符编码?
为了上下文,我将在底部添加几个额外的步骤。
1) 创建数据框:
d.enc <- data.frame( utf8 = c(" ", "_ ", " _"),
mac = c(" ", "_ ", " _"),
label = c("space", "underscore space", "space underscore") )
2) 转换为字符向量并尝试设置编码:
d.enc2$utf8 <- as.character(d.enc$utf8)
d.enc2$mac <- as.character(d.enc$mac)
d.enc2$label <- as.character(d.enc$label)
Encoding(d.enc2$utf8) <- "UTF-8"
Encoding(d.enc2$mac) <- "MACINTOSH"
Encoding(d.enc2$utf8)
# [1] "unknown" "unknown" "unknown"
Encoding(d.enc2$mac)
# [1] "unknown" "unknown" "unknown"
3) 这不是我所希望的。我本来期望的:
# [1] "UTF-8" "UTF-8" "UTF-8" and
# [1] "MACINTOSH" "MACINTOSH" "MACINTOSH"
4) 是否支持我想要的编码? (在 Mac 上运行)
temp <- iconvlist()
temp[399]
# [1] "UTF-8"
temp[338]
# [1] "MACINTOSH"
似乎支持它们。
5) 一旦我可以更改编码,我想执行以下操作以查看排序顺序如何更改:
library(dplyr)
arrange(d.enc2, desc(utf8))
arrange(d.enc2, desc(mac))
6) 我希望输出看起来像这样,但顺序不同,具体取决于用于排序的列:
utf8 mac label
1 _ _ underscore space
2 _ _ space underscore
3 space
感谢您的任何提示!
【问题讨论】:
-
你有解决办法吗?
-
@AbhinandanSatpute nope 仍然没有解决方案!
标签: r encoding utf-8 character-encoding iconv