使用R仅在2个数据集之间组合“新”时间序列观测值

时间:2013-05-22 20:46:38

标签: r compare time-series

使用单独的程序,我每5分钟收集一次时间序列观察,然后每5分钟生成一个CSV文件,其中包括当前月份的所有5分钟观察结果。我试图在R程序中弄清楚如何将CSV文件中的“仅新”数据组合到已包含当前月份的一些数据的现有多年时间序列数据库中。我不想覆盖已经存在的现有数据,我只想在文件中添加任何新的时间序列观察到主数据库。 (注意:新数据可能并不总是新文件中的最后一行数据。)我需要某种类型的脚本来比较这两个文件,然后添加新的。两个文件中的标题相同。我尝试过追加和合并,但看不到让它正常工作。我很感激任何帮助!!!!!

Monthly Data
DF[1:10,1:10]
             Date.Time PD0Binary PAR NitrateUM NitrateMGL Nlight Ndark Temp2m SpC2m Depth2m
1  2013-05-01 11:40:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
2  2013-05-01 11:45:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
3  2013-05-01 11:50:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
4  2013-05-01 11:55:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
5  2013-05-01 12:00:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
6  2013-05-01 12:05:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
7  2013-05-01 12:10:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
8  2013-05-01 12:15:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
9  2013-05-01 12:20:00        NA  NA        NA         NA     NA    NA     NA    NA      NA
10 2013-05-01 12:25:00        NA  NA        NA         NA     NA    NA     NA    NA      NA

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,我建议采用以下解决方案。

假设我们有两个CSV文件。旧的(例如包含120个条目)和新的CSV文件(例如135个条目),我们只想从中提取15个新条目。

  1. 使用max(...)查找最新的Date.Time。以下是max如何使用日期时间的示例:

    lastEntry <- max(as.POSIXct("2013-05-23 11:20:00"), as.POSIXct("2013-05-23 11:30:00"),
                     as.POSIXct("2013-05-23 11:25:00"))
    lastEntry
    > [1] "2013-05-23 11:30:00 CEST"
    
  2. 从条件为Date.Time > lastEntry

    的新CSV文件中创建数据的子集
    newEntries <- subset(newCSVdata, Date.Time > lastEntry)
    
  3. newEntries现在包含15个新条目。将它们添加到您的数据库中。