[問題] read.table 多個sep 遺失值miss

作者: f496328mm (為什麼會流淚)   2016-05-01 00:35:19
問題一
我要讀的是筆記本txt檔
檔案太大無法先用excel處理
我的分隔符號有多個 請問要怎麼寫??
我的code
read.table("d:\\xxx.txt" ,sep=";", fill=T, quote="")
我想要用 ; 和 空格 當作分隔符號 未來可能再增加
==========================================================
問題二
我的資料中 有些地方沒有值 所以當初在存的時候就直接忽略 連空白都沒留
像這樣:
sam;16;boy; 2015:00:09:59
green;18;gril
paul;20; 2015:00:09:59
第一行是name
第二行是age
第三行是性別
但是paul沒有記錄到 所以直接記錄到第四行的time
green的time也沒記錄到
想問有沒有什麼方法解決 我目前只想到比較笨的方法
給它特定範圍去判斷 像性別不是boy就是gril 出現其他就給他NA
還有
這樣讀資料也會因為每列資料col都不一樣 有的時候會出現問題
是可以讀成文字再去慢慢拆開 不過有點笨就是了
最後想問如果讀資料量上百萬筆
還是用read.table嗎?
有沒有比較好的函數專門處理large data?
謝謝
作者: andrew43 (討厭有好心推文後刪文者)   2016-05-01 00:55:00
先考慮 data.table package 的 data.table 和 fread這在大資料有利,但還是要先解決各列不齊一的問題。目前我覺得拆開各列來解似乎是不可必免的,因為在邏級上判別哪個欄位要給NA是你來設計的。所以核心問題可能變成怎麼有效率且穩健地整理大量字串。第一個問題我想還是要先字串處理後再丟給現成func才行。因為指定多於一個字符可能會很麻煩,所以主流func不做。例如你很難精確地說"a b ;c; d"的結果是什麼。所以我覺得指定reg expr自己切會簡單很多。

Links booklink

Contact Us: admin [ a t ] ucptt.com