【问题标题】:R timeseries dataset. Merge new data with old as if timestamp_new >= Timestamp_old and if ID_new > ID_old then merge new dataR 时间序列数据集。将新数据与旧数据合并,就像 timestamp_new >= Timestamp_old 并且如果 ID_new > ID_old 然后合并新数据
【发布时间】:2019-06-13 17:39:08
【问题描述】:

(最后的问题) 我有一张这样的桌子:

   Date          Period  ID Multi    Volume Price 
 16/01/2019        1    1 -5124.00   -300  34.16    
 16/01/2019        2    1 -5124.00   -300  34.16   
 16/01/2019        2    2  -993.30    -60  33.11    
 16/01/2019        2    3 -4783.00   -200  47.83    
 16/01/2019        2    4  5906.25    150  78.75   
 16/01/2019        2    5 -3342.50   -382  17.50   
 16/01/2019        2    6  8745.00    220  79.50  
 16/01/2019        2    7 16050.00    300 107.00    
 16/01/2019        3    1 -5124.00   -300  34.16  
 16/01/2019        3    2  -993.30    -60  33.11  
 16/01/2019        3    3 -3955.00   -200  39.55   

期间是小时。发布新数据时,既可以包含新数据,例如第 4 小时 ID 1,也可以包含第 2 小时的新数据,然后新数据接收第 2 小时的 ID 8。

然后新数据将如下所示。它不再显示第一个小时,因为它属于过去。它显示了 hour2 hour5 的新观察结果,H4 没有。

   Date          Period  ID Multi    Volume Price   
 16/01/2019        2    1 -5124.00   -300  34.16   
 16/01/2019        2    2  -993.30    -60  33.11    
 16/01/2019        2    3 -4783.00   -200  47.83    
 16/01/2019        2    4  5906.25    150  78.75   
 16/01/2019        2    5 -3342.50   -382  17.50   
 16/01/2019        2    6  8745.00    220  79.50  
 16/01/2019        2    7 16050.00    300 107.00 
 15/01/2019        2    8  16050.00    300 107.00   
 16/01/2019        3    1 -5124.00   -300  34.16  
 16/01/2019        3    2  -993.30    -60  33.11  
 16/01/2019        3    3 -3955.00   -200  39.55  
 16/01/2019        5    1 -3955.00   -200  39.55     

如何将新数据与旧数据合并。 额外的信息是我在某些日子不会收到任何新信息。

ID 是该小时的交易。特定时间的每笔新交易都会获得一个新的交易 ID。每次有(a)新交易时,我都会获取数据。交易可以提前 24 小时进行。当发生新交易时,我会收到包含从现在到 +24 小时所有已确认交易的 CSV 文件,而不仅仅是新交易。就像我展示的表格一样。所以我必须找出旧数据集和新 csv 文件之间的区别,然后将新行/行添加到旧数据集中并等到收到新的 csv 文件

我只想打开旧数据集并写一些类似的东西

 if Date_new = Date_old Then
     If Period_new = period_old Then
        IF ID_new > ID_old Then
            Add the new rows to old dataset.
        end if
    else if Perioed_new > period_old Then
        Add the new rows to old dataset
    end if
 else if Date New > Date_old then
      Add the new rows to old dataset
 end if

sort dataset by date -> period -> ID.
save dataset.     

我从 matlab 过渡到 R 并被这部分卡住了。 我可以让它看看是否有 csv 然后打开 csv 从原始数据到我想要的结构的转换并将其保存到数据库中。

希望有人可以就如何建模日期集提供一些提示。我花了几个小时寻找这个相对简单问题的解决方案......

最好的 弗雷德里克

【问题讨论】:

    标签: r database merge dataset


    【解决方案1】:

    我不能用我的低代表发表评论,所以我会尽快删除它。新数据的行为(与其他数据相比如何分配“8”),以及当前数据和新数据的行为(例如,您的数据是实时的并且每 X 小时写入新文件,还是覆盖这些文件?)您的最终目标是什么(您是否尝试将所有文​​件导入 R 以进行操作/分析)?

    提供可重现的示例可能会帮助您提高问题的清晰度。

    【讨论】:

    • 嗨,杰西卡。我会努力改进它。 ID 是那个小时的交易。特定时间的每笔新交易都会获得一个新的交易 ID。每次有(a)新交易时,我都会获取数据。交易可以提前 24 小时进行。当发生新交易时,我会收到包含从现在到 +24 小时所有已确认交易的 CSV 文件,而不仅仅是新交易。就像我展示的表格一样。所以我必须找出旧数据集和新 csv 文件之间的区别,然后将新行添加到旧数据集中,然后等到收到新的 csv 文件。
    【解决方案2】:

    终于……

    我喜欢包裹,但它们让我很懒。

    库(gtools)

    mydata

    图书馆(tidyverse)

    cleanmydata % distinct() ' 清除所有列中包含相同值的行。

    完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2017-06-27
      • 2020-04-11
      • 2019-03-30
      • 2018-03-30
      • 2013-06-25
      相关资源
      最近更新 更多