Re: [程式] R要如何讀不規則的txt檔
這裡是一個regular expression 的demo:
https://gist.github.com/wush978/5029291
我的R的版本是2.15.2
下面註解是我的跑出來的結果。
你可以看到,透過regular expression,
R可以定位出id, b_date, d_date的位置
並且可以處理missing data (第三行缺了d_date)
---
以下解釋一下我寫的regular expression:
"(?<id>[A-Z]\\d{9})(?<b_date>\\d{6})(?<d_date>\\d{6}){0,1}"
第一個括號"(?<id>[A-Z]\\d{9})"代表子pattern,
?<id>表示這個pattern叫作"id"
[A-Z]表示這是一個A-Z的字元
\\d表示這是一個數字(0-9), ps. \\是R字串的跳脫字元, 實際上只代表一個\
{9}表示有9個前面的東西, 也就是有9個數字
第二個括號同理
第3個括號最後接了{0,1}表示第3個括號的東西可能有0個或1個以對付missing data
可以注意到第3個d_date的長度是0,表示這裡有missing data
詳細的regular expression介紹可以參考:
http://statlab.nchc.org.tw/rnotes/?page_id=171
R的字串處理還可以參考
http://en.wikibooks.org/wiki/R_Programming/Text_Processing
※ 引述《piq (享)》之銘言:
: ------------------------------------------------------------------------
: [軟體程式類別]:
: R
: [程式問題]:
: 讀檔
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 低(1~3個月)
: [問題敘述]:
: 不規則的txt檔
: 譬如:身分證字號(ID)跟生日(b_bate) 死亡日(d_date) 一般人會要分開看
: 可是如果資料今天是 打成 X123456789050102550703
: 意思是id=X123456789 b_date=05年01月02日 d_date=55年07月03日
: 可是今天處理資料中 有人尚未死亡 故沒有d_date 有些則有
: 那要如何把這樣的資料有系統的讀入R呢?
: [程式範例]:
: -----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.140.25.134
※ 編輯: Wush978 來自: 114.140.25.134 (02/25 20:00)
※ 編輯: Wush978 來自: 114.140.25.134 (02/25 20:01)
推
02/27 00:10, , 1F
02/27 00:10, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):