作者helixc (@_2;)
看板R_Language
标题Re: [问题] 读入"鴴" "鸊鷉" 等怪字
时间Mon Jul 6 00:22:58 2015
※ 引述《celestialgod (攸蓝)》之铭言:
: ※ 引述《helixc (@_2;)》之铭言:
: # readxl套件: (不用JAVA,读取也比较快,也不会转换字串为factor)
: library(readxl)
: dat = read_excel("birdnames.xls")
这边报告一下... readxl这个套件没问题,
但用dplyr处里资料的时候就会有问题。
[code]
library(readxl)
library(dplyr)
fileName = "birdnames.xls"
#读取资料
x = read_excel(fileName)
#资料读取输出正常
x$c_name[51:52]
#使用dplyr::select来读资料,用两种不同的写法,一样都不正常
y1<-select(x, c_name, Order) ; y1[51:52,]
y2<- x %>% select(c_name, Order) ; y2[51:52,]
#使用base::unique来读取资料,正常
z<-unique(x$c_name); z[51:52]
还不太会贴code以及处里过程,直接贴图
http://imgur.com/7oOVkLm
不正常的资料
Source: local data frame [2 x 2]
c_name Order
1 白嘴潜鸟 51
2 小<U+9E0A><U+9DC9> 52
正常的资料
[1] "白嘴潜鸟" "小鸊鷉"
如果是package处里的问题的话,那转移到非windows系统是无解的吧?
只能舍弃dplyr使用*apply来输出名录了...
可是我还不会用*apply来写dplyr-like的功能阿Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.151.129
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1436113381.A.EAB.html
2F:→ celestialgod: 根据上面那篇 y1$c_name[51:52]这样又能正常显示XD 07/06 00:39
3F:→ celestialgod: 这是R print的问题(摊手 07/06 00:39
4F:→ celestialgod: i find a silution, please refer to http://goo.g 07/06 01:04
5F:→ celestialgod: l/XKK9a2 07/06 01:04
8F:→ celestialgod: 4q4eL 07/06 01:11
10F:→ helixc: 什麽软体可以自己帮你断句呀 MoPTT吗XDD 07/06 01:13
11F:→ helixc: 我加上 Sys.setlocale(locale="UTF-8") 就好了(摊手) 07/06 01:13
12F:→ helixc: 可惜没有跳脱dplyr来写程式的机会了(?) 07/06 01:13
13F:→ helixc: 可是为何base下的指令就OK, 但dplyr的指令就不行? 07/06 01:15
14F:→ celestialgod: 不是dplyr问题, 你看第二个网址有写是format问题。 07/06 01:17
15F:→ celestialgod: 只跟data.frame有关 07/06 01:17
16F:→ helixc: 好像没好...出现错误讯息 07/06 01:31
17F:→ helixc: Warning message: 07/06 01:32
18F:→ helixc: In Sys.setlocale(locale = "UTF-8") : 07/06 01:32
19F:→ helixc: OS reports request to set locale to "UTF-8" cannot b 07/06 01:32
20F:→ helixc: onored 07/06 01:32
21F:→ helixc: 我决定改输出序号到Excel去比对比较快...这样太累了 07/06 01:33
22F:推 leo0650: 因为Windows的locale好像没有UTF-8相关的 (若Mac OS可行) 07/06 01:53
23F:→ leo0650: 若要print在console可试试c大提供的方法,y1增加class 07/06 01:55
24F:→ leo0650: class(y1) <- c("unicode_df","data.frame","tbl") 07/06 01:56
25F:→ helixc: 有些工作真的还是excel比较快(苦笑) 07/06 03:20
26F:推 Edster: 我以前处理植物名录的时候,全使用代码,代码还是比较安心 07/06 17:11
27F:→ Edster: 不晓得你们代码怎麽编,我们是属名前三码跟种名前三码, 07/06 17:12
28F:→ Edster: 遇到变种跟亚种,就再三码。 07/06 17:13
29F:→ helixc: 各种台湾出现过的鸟类加起来最多也不会超过1000种, 07/06 21:26
30F:→ helixc: 而鸟类也有很好的名录可以参考,我知道的人都是直接用名录 07/06 21:27
31F:→ helixc: 的编号来操作...植物有五千多种以上,我以前大学的时候遇 07/06 21:27
32F:→ helixc: 到一位作草本的老师自己写PDA软体用属名3码种小名2码编码 07/06 21:27
33F:→ helixc: 不过听他说还是会遇到重复的... 07/06 21:28
34F:→ helixc: 回到本文的题旨..其实很有趣,就算那一个data.frame 07/06 21:28
35F:→ helixc: 里面的字变成乱码,还是可以和还没变成乱码(不是df格式?) 07/06 21:29
36F:→ helixc: 的资料很好的合并,程式还是都把他们当一家人XD 07/06 21:29
37F:→ helixc: 不过总得面对批次出图/档案的问题,该学非Win系统了Orz 07/06 21:29
38F:推 Neisseria: 在 Linux 和 Mac 上使用 utf-8 console 会容易得多 07/06 22:13
39F:→ andrew43: 所以…出错的根本原因是什麽呢? 07/07 00:21
40F:→ andrew43: 是R处理utf8大字集有问题吗?还是什麽? 07/07 00:22
41F:→ andrew43: 这一串讨论可能很重要。如果知道根本原因,可以帮很多人 07/07 00:23
42F:→ celestialgod: 第一, windows r显示utf8是没问题, 读取(要读exce 07/07 00:46
43F:→ celestialgod: l或是用readLines, 其他读不进去)也ok, 写入还没试 07/07 00:46
44F:→ celestialgod: 过... ,不过写到xls应该ok。第二, data.frame显 07/07 00:46
45F:→ celestialgod: 示有问题, 要用我推文中第二个连结去做。 07/07 00:46
46F:→ celestialgod: 这样的总结, ok吗? 07/07 00:47
47F:→ andrew43: 谢谢楼上补充。 07/07 01:24
48F:→ helixc: 抱歉第二个连结看不太懂,是要自己写print fun吗?可以回 07/07 08:08
49F:→ helixc: 文比较清楚吗?感谢 07/07 08:08
50F:→ helixc: 因为不只是显示,ggplot::savegg ()存图功能遇到奇怪的字 07/07 08:10
51F:→ helixc: 也会崩溃,问题不应该只是要在R上面秀出正常有怪字的df 07/07 08:10