[問題] 想利用data.table將Rawdata切割欄位

作者: squallscer (羽毛)   2015-02-22 00:27:36
文章分類提示:
- 問題: 當你想要問問題時,請使用這個類別
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
各位前輩們好,
小弟有一筆資料大約為500MB左右,
因這筆資料為原始檔案,
還沒將欄位定義好,
所以小弟想詢問如何讀入data.table後,
在將欄位進行切割?
example:
var1
1 001female 2019920404
2 002male 3019920505
3 003male 4019920606
4 004female 5019920707
希望可以透過欄位切割後變成:
id sex income birthday
1 001 female 20 19920404
2 002 male 30 19920505
3 003 male 40 19920606
4 004 female 50 19920707
再版上及google爬不到相關情形,
所以上來版上請教一下前輩,
謝謝!
[關鍵字]:
data.table , width
作者: andrew43 (討厭有好心推文後刪文者)   2015-02-22 00:45:00
你熟悉regular expression嗎?另外,如果只靠字元數判斷,可靠嗎?
作者: squallscer (羽毛)   2015-02-22 01:00:00
因為他有自己的codebook 字元數他們已經設定好了! regular expressions 我目前還不清楚 ><
作者: celestialgod (天)   2015-02-22 08:56:00
不知道strsplit可不可以用?
作者: andrew43 (討厭有好心推文後刪文者)   2015-02-22 12:42:00
沒意外的話,此例以正規表達式解決滿單純的。耶,id就取前三字元,sex就判斷有沒有"male"即可,生日就取最後8字元,income就"e"之後到倒數第9字元。這樣的規則夠不夠強韌?可以的話就可以下手了。sex就判斷有沒有"female"即可。
作者: celestialgod (天)   2015-02-22 20:39:00
substr, regexpr就可以達成了
作者: squallscer (羽毛)   2015-02-23 17:03:00
感謝各位前輩幫忙,但是資料有2000萬多Row分割出來的欄位也有10個以上,發現用substr執行速度相當的慢,還在苦惱中~
作者: celestialgod (天)   2015-02-23 20:26:00
用 Rcpp加速吧QQ..

Links booklink

Contact Us: admin [ a t ] ucptt.com