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

看板R_Language作者 (@_2;)時間9年前 (2015/07/06 00:23), 編輯推噓3(3048)
留言51則, 6人參與, 最新討論串5/6 (看更多)
※ 引述《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://www.ptt.cc/bbs/R_Language/M.1436113381.A.EAB.html

07/06 00:38, , 1F
07/06 00:38, 1F

07/06 00:39, , 2F
根據上面那篇 y1$c_name[51:52]這樣又能正常顯示XD
07/06 00:39, 2F

07/06 00:39, , 3F
這是R print的問題(攤手
07/06 00:39, 3F

07/06 01:04, , 4F
i find a silution, please refer to http://goo.g
07/06 01:04, 4F

07/06 01:04, , 5F
l/XKK9a2
07/06 01:04, 5F

07/06 01:05, , 6F
抱歉, 手機推文,斷掉,http://goo.gl/XKK9a2
07/06 01:05, 6F

07/06 01:11, , 7F
another discussion and solution https://goo.gl/M
07/06 01:11, 7F

07/06 01:11, , 8F
4q4eL
07/06 01:11, 8F

07/06 01:12, , 9F
07/06 01:12, 9F

07/06 01:13, , 10F
什麼軟體可以自己幫你斷句呀 MoPTT嗎XDD
07/06 01:13, 10F

07/06 01:13, , 11F
我加上 Sys.setlocale(locale="UTF-8") 就好了(攤手)
07/06 01:13, 11F

07/06 01:13, , 12F
可惜沒有跳脫dplyr來寫程式的機會了(?)
07/06 01:13, 12F

07/06 01:15, , 13F
可是為何base下的指令就OK, 但dplyr的指令就不行?
07/06 01:15, 13F

07/06 01:17, , 14F
不是dplyr問題, 你看第二個網址有寫是format問題。
07/06 01:17, 14F

07/06 01:17, , 15F
只跟data.frame有關
07/06 01:17, 15F

07/06 01:31, , 16F
好像沒好...出現錯誤訊息
07/06 01:31, 16F

07/06 01:32, , 17F
Warning message:
07/06 01:32, 17F

07/06 01:32, , 18F
In Sys.setlocale(locale = "UTF-8") :
07/06 01:32, 18F

07/06 01:32, , 19F
OS reports request to set locale to "UTF-8" cannot b
07/06 01:32, 19F

07/06 01:32, , 20F
onored
07/06 01:32, 20F

07/06 01:33, , 21F
我決定改輸出序號到Excel去比對比較快...這樣太累了
07/06 01:33, 21F

07/06 01:53, , 22F
因為Windows的locale好像沒有UTF-8相關的 (若Mac OS可行)
07/06 01:53, 22F

07/06 01:55, , 23F
若要print在console可試試c大提供的方法,y1增加class
07/06 01:55, 23F

07/06 01:56, , 24F
class(y1) <- c("unicode_df","data.frame","tbl")
07/06 01:56, 24F

07/06 03:20, , 25F
有些工作真的還是excel比較快(苦笑)
07/06 03:20, 25F

07/06 17:11, , 26F
我以前處理植物名錄的時候,全使用代碼,代碼還是比較安心
07/06 17:11, 26F

07/06 17:12, , 27F
不曉得你們代碼怎麼編,我們是屬名前三碼跟種名前三碼,
07/06 17:12, 27F

07/06 17:13, , 28F
遇到變種跟亞種,就再三碼。
07/06 17:13, 28F

07/06 21:26, , 29F
各種台灣出現過的鳥類加起來最多也不會超過1000種,
07/06 21:26, 29F

07/06 21:27, , 30F
而鳥類也有很好的名錄可以參考,我知道的人都是直接用名錄
07/06 21:27, 30F

07/06 21:27, , 31F
的編號來操作...植物有五千多種以上,我以前大學的時候遇
07/06 21:27, 31F

07/06 21:27, , 32F
到一位作草本的老師自己寫PDA軟體用屬名3碼種小名2碼編碼
07/06 21:27, 32F

07/06 21:28, , 33F
不過聽他說還是會遇到重複的...
07/06 21:28, 33F

07/06 21:28, , 34F
回到本文的題旨..其實很有趣,就算那一個data.frame
07/06 21:28, 34F

07/06 21:29, , 35F
裡面的字變成亂碼,還是可以和還沒變成亂碼(不是df格式?)
07/06 21:29, 35F

07/06 21:29, , 36F
的資料很好的合併,程式還是都把他們當一家人XD
07/06 21:29, 36F

07/06 21:29, , 37F
不過總得面對批次出圖/檔案的問題,該學非Win系統了Orz
07/06 21:29, 37F

07/06 22:13, , 38F
在 Linux 和 Mac 上使用 utf-8 console 會容易得多
07/06 22:13, 38F

07/07 00:21, , 39F
所以…出錯的根本原因是什麼呢?
07/07 00:21, 39F

07/07 00:22, , 40F
是R處理utf8大字集有問題嗎?還是什麼?
07/07 00:22, 40F

07/07 00:23, , 41F
這一串討論可能很重要。如果知道根本原因,可以幫很多人
07/07 00:23, 41F

07/07 00:46, , 42F
第一, windows r顯示utf8是沒問題, 讀取(要讀exce
07/07 00:46, 42F

07/07 00:46, , 43F
l或是用readLines, 其他讀不進去)也ok, 寫入還沒試
07/07 00:46, 43F

07/07 00:46, , 44F
過... ,不過寫到xls應該ok。第二, data.frame顯
07/07 00:46, 44F

07/07 00:46, , 45F
示有問題, 要用我推文中第二個連結去做。
07/07 00:46, 45F

07/07 00:47, , 46F
這樣的總結, ok嗎?
07/07 00:47, 46F

07/07 01:24, , 47F
謝謝樓上補充。
07/07 01:24, 47F

07/07 08:08, , 48F
抱歉第二個連結看不太懂,是要自己寫print fun嗎?可以回
07/07 08:08, 48F

07/07 08:08, , 49F
文比較清楚嗎?感謝
07/07 08:08, 49F

07/07 08:10, , 50F
因為不只是顯示,ggplot::savegg ()存圖功能遇到奇怪的字
07/07 08:10, 50F

07/07 08:10, , 51F
也會崩潰,問題不應該只是要在R上面秀出正常有怪字的df
07/07 08:10, 51F
文章代碼(AID): #1LcLdbwh (R_Language)
文章代碼(AID): #1LcLdbwh (R_Language)