R从文本文件中读取数据

时间:2016-06-10 08:57:50

标签: r read.table

我有一个具有挑战性的文件阅读任务。 我有一个典型的旧会计部门的.txt文件(包含标题,标题,页面和有用的表格定量和定性信息)。它看起来像这样: How the data looks

从这个文件我尝试做两个任务(read.table和扫描):

1)提取在|之间制表的信息,这是会计信息(任何以不容易的数据框或字符向量结束的试验)

tabulated info to be extracted

2)在文本文件中以“Customers”开头的每个字幕作为变量包含:如您所见,客户信息是标题,然后是会计信息(应付款),然后是另一个客户和会计信息等等。所以不是一列,而是一行(?)

我一直尝试使用read.table(多个sepquote参数)和扫描,然后尝试使用角色向量。

谢谢!

1 个答案:

答案 0 :(得分:1)

我以前去过那里,所以我知道你经历了什么。

我有2个新闻给你,一个坏,一个好。糟糕的是我已经在SAS中读过这些类型的文件,但从未在R中读过 - 但是 好消息是我可以给你一些提示,以便你可以在R中解决。

所以策略如下:

1)您要将文件读入包含单个列的数据框中。此列是字符并将保留 输入文件的整行。如果文件中最大的一行是80长,则长度为80。

2)现在你有了一个数据框,其中每条记录都等于输入文件中的一行。此时您可能想检查一下 dataframe具有与文件中每行相同的数字或记录。

3)现在,您可以使用grep来摆脱或保留那些符合您标准的行(即以&#34开头的字幕;客户")。 你可能会发现正则表达式在这里很有用。

4)您的数据框现在只有匹配'客户'图案和表格模式 (即行以'Country'/\d{3} \d{8}/' Total'开头。

5)你现在需要的是创建一个组变量,每当它找到' Customer'时增加+1。因此,group = 1将重复相同的值,直到找到' Customer 010343'其中group为group = 2。或者甚至更好,您的群组可以是客户ID,直到找到新的ID。你需要以某种方式保留id,直到找到新的id。

从最后一步开始,您已经完成了很多工作,因为您可以非常轻松地识别客户和表格。您可能想要创建一个以表格格式输出表字符串的函数。

您是在单个表中处理它们还是在n数据帧中拆分数据帧以单独处理它们取决于您。

在SAS中有指针(@)和保留(保留语句)的概念,其中符合条件的每一行可以与其他标准不同地处理,因此您输出的数据集已经包含表格格式的列和客户信息。

希望这对你有所帮助。