代码之家  ›  专栏  ›  技术社区  ›  tovare

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

  •  2
  • tovare  · 技术社区  · 16 年前

    我导入了一个包含大量列和数据节的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. 以某种有意义的方式在文件中处理不同的数据集。

    如有任何提示,我们将不胜感激。谢谢您。


    状态更新:

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

    1 回复  |  直到 13 年前
        1
  •  3
  •   Jouni K. Seppänen    16 年前

    我个人会做的是用某种脚本语言编写一个脚本,在将文件读取到r之前分离不同的数据集,并可能进行一些必要的数据转换。

    如果你想在R中进行拆分,请查阅 readLines scan - read.csv2 太高级别,用于读取单个数据帧。您可以将不同的数据集写入不同的文件中,或者,如果您有雄心壮志,可以将文件编写为可用于 CVS2 从底层大文件的正确部分读取。

    一旦处理了将数据集分离为不同文件的问题,请使用 CVS2 在这些(或两者中的任何一个)上 read.table 变量是最好的–如果它们不是选项卡而是固定宽度字段,请参见 read.fwf )如果 <NA> 表示文件中“不可用”,请确保将其指定为 na.strings . 如果您不这样做,r认为您在该字段中有非数字数据,但是使用正确的 弦乐 ,将自动将字段转换为数字。似乎您的某个字段可以包含时间戳,例如 00:00 ,所以您需要使用 colClasses 并指定可将时间戳格式转换为的类。如果内置 Date 类不起作用,只需定义自己的类 timestamp 类与安 as.timestamp 执行转换的函数。