我以前去过那里,所以我知道你正在经历什么。
我有2条新闻给你,一个坏,一个好。坏一个我已阅读,在这些类型的文件在SAS吨次,但从未在的R - 然而 好消息是我可以给你一些提示,这样你就可以做出来的R.
所以策略如下:
1)您将读取文件到一个数据帧,其中包含只有的单个列。这一栏是字符,并将保存 整行输入文件。即如果文件中的最大行长度为80,则长度为80。
2)现在你有一个数据框,其中每条记录等于输入文件中的一行。在这一点上,你可能想要检查你的文件中的数据帧与每行有相同的数字或记录。
3)现在你可以使用grep
来摆脱关闭或只保留那些符合条件的(即与“客户”)开头字幕线。 你可能会发现在这里真正有用的正则表达式。
4)你的数据框现在只有符合“客户”模式和表模式 (即符合'Country'
或/\d{3} \d{8}/
或' Total'
开始)记录。
5)你现在需要做的是创建一组变量,增加每找到“客户”时间+1。所以group = 1会重复相同的值,直到找到'Customer 010343',其中group现在是group = 2。或者甚至更好的是,您的组可以是客户ID,直到找到新的ID。你需要以某种方式保留该id,直到找到一个新的id。
从你几乎做,你将能够识别客户和表格很容易的最后一步。您可能希望创建一个以表格格式输出表格字符串的函数。
无论您是在单个表格中处理它们,还是将数据帧拆分为n个数据帧来单独处理它们都由您决定。
在SAS中,这是指针(@)和保留(保留语句)的概念,每条匹配条件的行可以与其他条件不同,因此您输出的数据集已包含表格格式的列和客户信息。
嗯,希望这可以帮助你。
因为这是一个固定宽度的文件,所以使用'read.fwf()'会更好。 – Andrie
我不认为''read.fwf''完全有助于所有标准方法。 – Altons