子集数据框使用日期范围作为过滤器和R中的分组变量

时间:2016-06-03 11:39:57

标签: r date select subset

我不认为这是Range join data.frames - specific date column with date ranges/intervals in R 的重复问题,因为我不打算合并数据框但是要从数据框中删除所有外部记录我在另一个数据框中指定的时间范围。

具体来说,我想在id_time下面的文件中选择按变量hr分组的记录,使用第二个文件dates中的日期。每个id_time感兴趣的时间段。

文件hr最初有> 1000行,每行是属于个人id_time的观察,每个观察都有Local date中记录的日期。每个人有很多观察,每个观察都有不同的日期。大致这个文件看起来像这样:

hr<-read.table(text = 
                     "id_time   season  sex Local_date  Area(ha)
                   10C_MTHM Late_dry    M   2015/09/01  12231.49898
                   10C_MTHM Late_dry    M   2015/10/31  15883.57836
                   10C_MTHM Wet         M   2015/11/30  2725.42549
                   10C_MTHM Wet         M   2015/12/31  40743.25861
                   10C_MTHM Wet         M   2016/01/31  44685.19565
                   10C_MTHM Wet         M   2016/02/26  21313.59966
                   10C_MTHM Wet         M   2014/12/31  36782.41615
                   10C_MTHM Wet         M   2015/01/31  126159.3232
                   10C_MTHM Wet         M   2015/02/28  113034.0324
                   10C_MTHM Early_dry   M   2015/03/31  50179.50564
                   10C_MTHM Early_dry   M   2015/04/30  29744.83677
                   10C_MTHM Early_dry   M   2015/05/31  33990.54416
                   10C_MTHM Early_dry   M   2015/06/30  31081.3867
                   10E_CHIM2    Late_dry    M   2015/09/30  5467.727522
                   10E_CHIM2    Late_dry    M   2015/10/31  925.188892
                   10E_CHIM2    Wet         M   2015/11/30  4663.484598
                   10E_CHIM2    Wet         M   2015/12/31  18767.86083
                   10E_CHIM2    Wet         M   2016/01/31  25163.76076
                   10E_CHIM2    Wet         M   2016/02/26  40432.86667
                   10E_CHIM2    Late_dry    M   2014/09/30  12403.64243
                   10E_CHIM2    Late_dry    M   2014/10/31  15391.80744
                   11C_SDBM Late_dry    M   2015/07/31  292012.0909
                   11C_SDBM Late_dry    M   2015/08/31  149293.0196
                   11C_SDBM Late_dry    M   2015/09/30  88775.83245
                   11C_SDBM Late_dry    M   2015/10/31  20980.49625
                   11C_SDBM Wet         M   2015/11/30  44679.24235
                   11C_SDBM Wet         M   2015/12/31  85124.26871
                   11C_SDBM Wet         M   2016/01/31  4573.904479",
                   header = TRUE)

第二个文件dates只有几行,此处唯一的信息是id time文件中显示的每个hr个字段的日期范围。这个带有日期范围的dates文件是我想要用来选择所有具有相应个体id_time的每个日期范围内的日期的行的文件,删除所有其他行。日期超出特定时期:

dates<-read.table(text = 
                    "date_id    start_date  end_date
                    10C_MTHM    2015/02/24  2016/02/24
                    11C_SDBM    2015/01/01  2015/06/30
                    10E_CHIM2   2015/01/01  2016/01/01",
                                        header = TRUE)

我的预期结果是hr文件(只有一个文件),其中包含每个id_time个人的所有记录,其日期属于dates文件中显示的感兴趣期间。在感兴趣的时间段之外的每个人的所有其余记录应在输出中删除。

例如,对于第一个人10C_MTHM,我希望最终数据库仅包含此个人在2015/02/24和2016/02/24内的记录,如dates文件中所指定。等等每个人。所有这些记录都在一个数据库中。

我发现了一个与此类似的问题,但区别在于我的日期范围不在同一文件的列中,而是在第二个文件中R: Subsetting a data frame using a list of dates as the filter

如何创建代码以根据不同文件中指定的信息选择记录?

非常感谢!

0 个答案:

没有答案