使用另一个数据集过滤一个数据集[同时保留前一天或前两天的数据]

时间:2015-11-15 09:24:14

标签: r

我有以下两个数据集: -

  1. 每月水质数据
  2. 降雨量(每日观察@hourly时间戳)
  3. 第一个水质数据集主要包含污染物浓度

    >wq_data
    
    Date         TSS       TZn       TCu
    2/02/1995    16.0      0.02      0.006
    9/03/1995    10.0      0.03      0.005
    7/04/1995     8.2      0.04      0.004
    10/05/1995    4.3      0.04      0.006
    

    降雨量数据是指天数的小时数据。

    >Data_ppt
    
    Date               Rain
    1/02/1995 01:00    0.0
    1/02/1995 02:00    1.87
    1/02/1995 03:00    0.0
    1/02/1995 04:00    0.0
    1/02/1995 05:00    0.0
    .....
    2/03/1995 01:00    0.0
    

    我正在尝试根据wq_data中的日期从Data_ppt中提取数据。我理解这可以使用许多技术来完成,例如本Q&A中提到的但我必须提前一步,在wq_data中记录日期前1或5天提取Data_ppt数据。

    我想要一个看起来像这样的新数据集。 (以wq_data $ Date之前1天为例)

    >1day_prior
    
    Date               Rain
    1/02/1995 01:00    0.0
    1/02/1995 02:00    1.87
    1/02/1995 03:00    0.0
    1/02/1995 04:00    0.0
    1/02/1995 05:00    0.0
    1/02/1995 06:00    0.0
    1/02/1995 07:00    0.0
    1/02/1995 08:00    0.0
    1/02/1995 09:00    0.0
    1/02/1995 10:00    0.0
    1/02/1995 11:00    0.60
    1/02/1995 12:00    0.0
    1/02/1995 13:00    0.0
    1/02/1995 14:00    0.0
    1/02/1995 15:00    0.0
    1/02/1995 16:00    0.0
    1/02/1995 17:00    0.0
    1/02/1995 18:00    0.50
    1/02/1995 19:00    0.0
    1/02/1995 20:00    0.0
    1/02/1995 21:00    0.0
    1/02/1995 22:00    0.0
    1/02/1995 23:00    0.0
    1/02/1995 24:00    0.0
    8/03/1995 01:00    0.0 
    8/03/1995 02:00    0.78 and so forth
    

    如果我需要提供任何澄清/修改以使其成为一个措辞更好的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

要获得先前日期的范围,您可以在基础R

中执行此操作
# first get the sequence of 5 prior dates 
dates = do.call("c", lapply(split(wq_data, wq_data$Date), 
                     function(x) seq(as.Date(x$Date)-5, as.Date(x$Date)-1, 1)))

# use the sequence to select the dates from second data frame
Data_ppt[as.Date(Data_ppt$Date) %in% dates,]