2016-09-09 29 views
-5

假设我有一个包含3列A,B和C的数据集,其中包含大量行的日期。如何创建一个子集,省略C中的日期不在A和B中的日期范围内的行?基于日期范围的R子集

+1

嗨Jason,欢迎来到StackOverflow。请查看[this](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),并尝试为我们提供最少的可重现示例。 –

+0

此外,这种操作被称为“子集” - 这应该可以帮助您轻松地谷歌答案。如果你找不到任何东西(不太可能),那么*然后*在这里提出一个问题(并提供一些数据以及迄今为止已经尝试过的内容)。 – jakub

+0

[R - 检查字符串是否包含特定日期范围内的日期]的可能重复(http://stackoverflow.com/questions/31716187/r-check-if-string-contains-dates-within-specific-date-range) – Sotos

回答

0

你在问像下面这样的东西吗?

比方说,你最初的数据帧是DF,这是这样的:

df 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
4 2016-01-14 2016-08-21 2016-04-01 
5 2016-09-02 2016-06-15 2016-05-01 
6 2016-05-09 2016-07-17 2016-05-31 
7 2016-06-13 2016-06-23 2016-07-01 
8 2016-09-17 2016-03-11 2016-07-31 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

现在,如果你做下面的子集操作,我们将得到以下数据框的子集:

df.sub <- df[apply(df, 1, function(x) (x[3] < min(x[1], x[2])) | 
             (x[3] > max(x[1], x[2]))),] 
df.sub 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
5 2016-09-02 2016-06-15 2016-05-01 
7 2016-06-13 2016-06-23 2016-07-01 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

希望能帮助到你。