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