Re: [問題] 讀入"鴴" "鸊鷉" 等怪字

作者: helixc (@_2;)   2015-07-06 00:22:58
※ 引述《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
作者: celestialgod (天)   2015-07-06 00:38:00
#1Kuvs-9O (Statistics)根據上面那篇 y1$c_name[51:52]這樣又能正常顯示XD這是R print的問題(攤手i find a silution, please refer to http://goo.gl/XKK9a2抱歉, 手機推文,斷掉,http://goo.gl/XKK9a2another discussion and solution https://goo.gl/M4q4eLhttps://goo.gl/M4q4eL 又斷...
作者: helixc (@_2;)   2015-07-06 01:13:00
什麼軟體可以自己幫你斷句呀 MoPTT嗎XDD我加上 Sys.setlocale(locale="UTF-8") 就好了(攤手)可惜沒有跳脫dplyr來寫程式的機會了(?)可是為何base下的指令就OK, 但dplyr的指令就不行?
作者: celestialgod (天)   2015-07-06 01:17:00
不是dplyr問題, 你看第二個網址有寫是format問題。只跟data.frame有關
作者: helixc (@_2;)   2015-07-06 01:31:00
好像沒好...出現錯誤訊息Warning message:In Sys.setlocale(locale = "UTF-8") :OS reports request to set locale to "UTF-8" cannot bonored我決定改輸出序號到Excel去比對比較快...這樣太累了
作者: leo0650 (呂奕)   2015-07-06 01:53:00
因為Windows的locale好像沒有UTF-8相關的 (若Mac OS可行)若要print在console可試試c大提供的方法,y1增加classclass(y1) <- c("unicode_df","data.frame","tbl")
作者: helixc (@_2;)   2015-07-06 03:20:00
有些工作真的還是excel比較快(苦笑)
作者: Edster (Edster)   2015-07-06 17:11:00
我以前處理植物名錄的時候,全使用代碼,代碼還是比較安心不曉得你們代碼怎麼編,我們是屬名前三碼跟種名前三碼,遇到變種跟亞種,就再三碼。
作者: helixc (@_2;)   2015-07-06 21:26:00
各種台灣出現過的鳥類加起來最多也不會超過1000種,而鳥類也有很好的名錄可以參考,我知道的人都是直接用名錄的編號來操作...植物有五千多種以上,我以前大學的時候遇到一位作草本的老師自己寫PDA軟體用屬名3碼種小名2碼編碼不過聽他說還是會遇到重複的...回到本文的題旨..其實很有趣,就算那一個data.frame裡面的字變成亂碼,還是可以和還沒變成亂碼(不是df格式?)的資料很好的合併,程式還是都把他們當一家人XD不過總得面對批次出圖/檔案的問題,該學非Win系統了Orz
作者: Neisseria (Neisseria)   2015-07-06 22:13:00
在 Linux 和 Mac 上使用 utf-8 console 會容易得多
作者: andrew43 (討厭有好心推文後刪文者)   2015-07-07 00:21:00
所以…出錯的根本原因是什麼呢?是R處理utf8大字集有問題嗎?還是什麼?這一串討論可能很重要。如果知道根本原因,可以幫很多人
作者: celestialgod (天)   2015-07-07 00:46:00
第一, windows r顯示utf8是沒問題, 讀取(要讀excel或是用readLines, 其他讀不進去)也ok, 寫入還沒試過... ,不過寫到xls應該ok。第二, data.frame顯示有問題, 要用我推文中第二個連結去做。這樣的總結, ok嗎?
作者: andrew43 (討厭有好心推文後刪文者)   2015-07-07 01:24:00
謝謝樓上補充。
作者: helixc (@_2;)   2015-07-07 08:08:00
抱歉第二個連結看不太懂,是要自己寫print fun嗎?可以回文比較清楚嗎?感謝因為不只是顯示,ggplot::savegg ()存圖功能遇到奇怪的字也會崩潰,問題不應該只是要在R上面秀出正常有怪字的df

Links booklink

Contact Us: admin [ a t ] ucptt.com