【问题标题】:csv file with multiple time-series具有多个时间序列的 csv 文件
【发布时间】:2010-10-05 07:22:22
【问题描述】:

我导入了一个 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 个文件。

【问题讨论】:

    标签: r time-series


    【解决方案1】:

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

    如果您想在 R 中进行拆分,请查找 readLinesscan - read.csv2 级别太高,用于读取单个数据帧。您可以将不同的数据集写入不同的文件,或者如果您有雄心壮志,可以创建可用于read.csv2 的类似文件的 R 对象,并从底层大文件的正确部分读取。

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

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 2019-07-13
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多