→ cywhale: sqldf csv要靠 library(RH2) csvread in github Q10 06/04 14:18
→ cywhale: 基本上不管sqldf, bigmemory..都不快,如果新資料格式都 06/04 14:19
→ cywhale: 相同,又有記憶體不夠問題,何不利用系統指令在R外就合併 06/04 14:20
→ jklkj: 不好意思我不太了解要怎麼用系統指令在R外合併,而且我好奇 06/04 14:47
→ jklkj: 的是既然我沒辦法rbind這些資料說是記憶體不足無法寫超過n 06/04 14:48
→ jklkj: row的資料,那麼我在外面合併不是一樣也讀不進來嗎? 06/04 14:49
→ jklkj: 其實我之前是一次讀全部幾千萬筆的資料,可是每次進來都只 06/04 14:49
→ jklkj: 有900多萬筆(兩次筆數相同),所以我才以為是不是R在讀單次 06/04 14:50
→ jklkj: 的資料列時有限制,我才回分開來讀 06/04 14:51
推 cywhale: 看你目的,如果讀進來只是為了合併,而不做其他運算,那 06/04 15:00
→ cywhale: 不如在R外做如cat 1.csv 2.csv > new.csv (linux) 06/04 15:04
→ cywhale: 如要把超過記憶體的資料讀進來做其他運算,bigmemory這類 06/04 15:06
→ cywhale: 放硬碟的方式有幫助,但bigmemory資料格式必須一致有限制 06/04 15:07
→ cywhale: 如資料會sample or subset後再運算,那資料庫篩完再進R 06/04 15:08
→ cywhale: 如果讀進來少資料,不是記憶體問題,有可能資料格式不整 06/04 15:11
→ cywhale: 另外幾百萬筆,應該fread吃得下來,不妨試試看 06/04 15:14
→ jklkj: 所以cat是linux的語法而fread是C++的語法,可是我剛好都沒 06/04 15:26
→ jklkj: 在使用,我在自己研究一下,非常感謝幫助,之後我應該也會 06/04 15:27
→ jklkj: 開始接觸相關的程式語言,感謝 06/04 15:28
推 Wush978: 先檢查一下妳的資料在9百萬多的列有沒有 06/04 15:32
推 Wush978: 格式錯誤 06/04 15:32
→ cywhale: No 抱歉造成誤會 是library(data.table)中的fread 06/04 15:32
→ Wush978: 都測測看read.table與read.csv 06/04 15:33
推 Wush978: 兩者在資料出錯時的反應不太一樣 06/04 15:33
→ Wush978: 大資料不要用rbind 盡量一次做完 06/04 15:34
→ Wush978: rbind會花費額外的記憶體做資料的複製 06/04 15:35
→ jklkj: 照理來說如果資料錯誤的話,不管是900萬筆或者是之後rbind 06/04 16:14
→ jklkj: 的2000萬筆應該都會有相同的問題不是嗎?我的意思是假設我 06/04 16:15
→ jklkj: 一開始全撈只有出現9,251,310筆,那麼我之後by年做rbind不 06/04 16:16
→ jklkj: 是也會在第9,251,310出現錯誤嗎? 06/04 16:17
→ jklkj: cywhale抱歉我沒有寫清楚,我目前是只有撈到2000多萬筆,之 06/04 16:17
→ jklkj: 後可能每年會以千萬筆的資料量增加,所以我不確定fread吃不 06/04 16:18
→ jklkj: 吃得下,還是感謝你,順便請問一個問題,所以csv檔在linux 06/04 16:19
→ jklkj: 下沒有row的限制嗎?感謝 06/04 16:19
→ Wush978: 沒有 06/04 18:35
→ jklkj: 回報一下進度,剛裝了32G2的記憶體,順利地跑完了2000多萬 06/13 15:43
→ jklkj: 筆,看來之前一次只能抓900多萬應該是因為記憶體無誤,只是 06/13 15:44
→ jklkj: 不知道抓取的筆數跟記憶體的限制在哪,不然之後就算跑完也 06/13 15:45
→ jklkj: 不敢確定跑完的是真的全部資料??? 06/13 15:45