作者Wush978 (拒看低质媒体)
看板Statistics
标题Re: [程式] R要如何读不规则的txt档
时间Mon Feb 25 19:59:36 2013
这里是一个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)
1F:推 ljta: 02/27 00:10