具有多个时间序列的 csv 文件
Posted
技术标签:
【中文标题】具有多个时间序列的 csv 文件【英文标题】:csv file with multiple time-series 【发布时间】: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")
我很好奇是否有更好的方法:
将所有数字读取为数字,无需转换。
以某种有意义的方式处理文件中的不同数据集。
任何提示将不胜感激。谢谢。
状态更新:
我还没有真正在 R 中找到一个好的解决方案,但是我已经开始在 Lua 中编写一个脚本来将每个单独的时间序列分离到一个单独的文件中。我暂时将其保持打开状态,因为我很好奇 R 将如何处理所有这些文件。我每天会收到 8 个文件。
【问题讨论】:
【参考方案1】:我个人会做的是在将文件读入 R 之前,用某种脚本语言编写一个脚本来分离不同的数据集,并且可能还会进行一些必要的数据转换。
如果您想在 R 中进行拆分,请查找 readLines
和 scan
- read.csv2
级别太高,用于读取单个数据帧。您可以将不同的数据集写入不同的文件,或者如果您有雄心壮志,可以创建可用于read.csv2
的类似文件的 R 对象,并从底层大文件的正确部分读取。
处理完将数据集分成不同的文件后,请在这些文件上使用read.csv2
(或最好的read.table
变体——如果这些不是制表符而是固定宽度的字段,请参阅read.fwf
)。如果<NA>
在您的文件中指示“不可用”,请务必将其指定为na.strings
的一部分。如果您不这样做,R 会认为您在该字段中有非数字数据,但使用正确的na.strings
,您会自动将该字段转换为数字。您的某个字段似乎可以包含00:00
之类的时间戳,因此您需要使用colClasses
并指定一个可以将您的时间戳格式转换为的类。如果内置的Date
类不起作用,只需定义您自己的timestamp
类和一个进行转换的as.timestamp
函数即可。
【讨论】:
以上是关于具有多个时间序列的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章
将具有不同架构(列)的多个文件 (.csv) 合并/合并为单个文件 .csv - Azure 数据工厂
如何使用 gsutil 将多个 csv 文件连接成一个具有单个标题的 csv 文件
将多个 csv 文件连接成具有相同标题的单个 csv - Python