如何创建时间序列数组

时间:2012-02-02 11:08:08

标签: r time-series zoo

我有几百个数据文件,每个文件包含一个3行标题和一列采样数据值。在标题中有多个字段,包括一个时间字段,它给出了创建文件的时间,例如"Time=10:00:00.156",采样时间"Tsamp=0.1000""TimeUnits=1.0000E-06"(即文件中数据值之间的时间间隔= 0.1微秒)。我想使用此信息为文件中的每个获取的数据值创建时间向量。

我该怎么做?我尝试了chron和zoo库以及不同的ts函数,但是无法做到。任何帮助都将深表感谢。

我希望能够将其放入脚本中,以便我可以自动处理所有文件。我想最终得到的是一个数据框,其中有两列显示第1列中所有上述文件的连接时间以及第2列中所有上述文件的连接测量值。

ATF v1.00 Date=23-01-2012; 
Time=10:38:56.421000; 
TracePoints=16384; 
TSamp=0.100000; 
TimeUnits=1.00000e-006; 
AmpToVolts=1.0000;
TraceMaxVolts=0.10000; 
PTime=0.00000; 
STime=0.00000; 
[TraceData] 
 4.82178e-004 
-1.37329e-003 
2.19116e-003 
4.38843e-003 
1.65405e-003 
3.36304e-003 
5.95093e-003 
2.19116e-003

再次感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我编辑了您的问题,以包含您在评论中添加的数据。使用textConnection与访问文件非常相似,但如果您先使用readLines然后使用read.table,则可能需要使用skip选项,因为我不确定文件连接将始终与文件上的这两个函数保持打开状态。我不认为您能够将亚毫秒数据转换为R时间类,因为时间数据的精确度需要在几毫秒的分辨率上表示数十年并且在尾数中没有足够的额外数字。一个八字节的数字。动物园包不需要时间作为索引,因此您可以自由使用序列号或“数字”时间刻度而不是“时间”时间刻度。

txt <- textConnection("ATF v1.00 Date=23-01-2012; 
Time=10:38:56.421000; 
TracePoints=16384; 
TSamp=0.100000; 
TimeUnits=1.00000e-006; 
AmpToVolts=1.0000;
TraceMaxVolts=0.10000; 
PTime=0.00000; 
STime=0.00000; 
[TraceData] 
 4.82178e-004 
-1.37329e-003 
2.19116e-003 
4.38843e-003 
1.65405e-003 
3.36304e-003 
5.95093e-003 
2.19116e-003")

headers <- readLines(txt, n=9)
tracedat <- read.table(txt, header=TRUE)

closeAllConnections()

 headers
#-----------------
[1] "ATF v1.00 Date=23-01-2012; " "Time=10:38:56.421000; "     
[3] "TracePoints=16384; "         "TSamp=0.100000; "           
[5] "TimeUnits=1.00000e-006; "    "AmpToVolts=1.0000;"         
[7] "TraceMaxVolts=0.10000; "     "PTime=0.00000; "            
[9] "STime=0.00000; "      
# ----------      
tracedat
#-----------------
  X.TraceData.
1  0.000482178
2 -0.001373290
3  0.002191160
4  0.004388430
5  0.001654050
6  0.003363040
7  0.005950930
8  0.002191160