具有多个时间序列的csv文件

时间:2009-02-04 00:23:09

标签: r time-series

我导入了一个包含大量列和数据部分的csv文件。

v <- read.csv2("200109.csv", header=TRUE, sep=",", skip="6", na.strings=c(""))

文件的布局是这样的:

Dataset1
time, data, .....
0       0
0       <NA>
0       0

Dataset2
time, data, .....
00:00   0
0       <NA>
0       0

(不同数据集的标题完全相同。

现在,我可以用第一个数据集绘制:

plot(as.numeric(as.character(v$Calls.served.by.agent[1:30])), type="l")

我很好奇是否有更好的方法:

  1. 将所有数字读取为数字,无需转换。

  2. 以一种有意义的方式处理文件中的不同数据集。

  3. 任何提示都将不胜感激。谢谢。


    状态更新:

    我还没有在R中找到一个好的解决方案,但我已经开始在Lua中编写一个脚本,将每个单独的时间序列分成一个单独的文件。我暂时离开这个,因为我很好奇R将如何处理所有这些文件。我每天会收到8个文件。

1 个答案:

答案 0 :(得分:3)

我个人会做的是用一些脚本语言创建一个脚本,在将文件读入R之前分离不同的数据集,并且可能也做一些必要的数据转换。

如果您想在R中进行拆分,请查找readLinesscan - read.csv2太高级,并且用于读取单个数据帧。您可以将不同的数据集写入不同的文件中,或者如果您雄心勃勃,可以编写可与read.csv2一起使用的类文件R对象,并从基础大文件的正确部分读取。

在您处理将数据集分成不同文件后,请对这些文件使用read.csv2(或最适合read.table个变体 - 如果这些不是制表符而是固定宽度字段,请参阅{{ 1}})。如果您的文件中read.fwf表示“不可用”,请务必将其指定为<NA>的一部分。如果您不这样做,R认为您在该字段中有非数字数据,但使用右na.strings,您会自动将字段转换为数字。您的某个字段似乎可以包含na.strings等时间戳,因此您需要使用00:00并指定可以转换时间戳格式的类。如果内置的colClasses类不起作用,只需定义您自己的Date类和执行转换的timestamp函数。