基于日期比较的子集数据集R
subset dataset based on date comparison R
我有如下所示的数据集
Col1 Col2 Col3 CutoffDate
12001 Yes 2008-08-15 2008-08-10
12001 Yes 2008-08-22 2008-08-10
12001 Yes 2008-08-10 2008-08-10
12001 Yes 2008-08-04 2008-08-10
我只对保留最后两行感兴趣,因为它们小于或等于截止日期 2008-08-10。
最终的数据集应该是这样的
Col1 Col2 Col3 CutoffDate
12001 Yes 2008-08-10 2008-08-10
12001 Yes 2008-08-04 2008-08-10
我知道 R 中的子集函数,但不知道该怎么做,非常感谢您的帮助。
你可以只使用常规比较
dat[dat$Col3 <= dat$CutoffDate, ]
# Col1 Col2 Col3 CutoffDate
# 3 12001 Yes 2008-08-10 2008-08-10
# 4 12001 Yes 2008-08-04 2008-08-10
假设 Col3 和 CuttoffDate 是 class "Date"
或者最好是,
with(dat, dat[Col3 <= CutoffDate, ])
您可以使用 subset()
:
df <- data.frame(Col1=c(12001,12001,12001,12001),Col2=c('Yes','Yes','Yes','Yes'),Col3=as.Date(c('2008-08-15','2008-08-22','2008-08-10','2008-08-04')),CutoffDate=as.Date(c('2008-08-10','2008-08-10','2008-08-10','2008-08-10')));
subset(df,Col3<=CutoffDate);
## Col1 Col2 Col3 CutoffDate
## 3 12001 Yes 2008-08-10 2008-08-10
## 4 12001 Yes 2008-08-04 2008-08-10
如果您使用的是 dplyr:
library(dplyr)
df <- data.frame(Col1 = c(12001, 12001, 12001, 12001),
Col2 = c("Yes", "Yes", "Yes", "Yes"),
Col3 = as.Date(c("2008-08-15", "2008-08-22", "2008-08-10", "2008-08-04")),
CutoffDate = as.Date(c("2008-08-10", "2008-08-10", "2008-08-10", "2008-08-10")))
df %>% filter(Col3 <= CutoffDate)
我有如下所示的数据集
Col1 Col2 Col3 CutoffDate
12001 Yes 2008-08-15 2008-08-10
12001 Yes 2008-08-22 2008-08-10
12001 Yes 2008-08-10 2008-08-10
12001 Yes 2008-08-04 2008-08-10
我只对保留最后两行感兴趣,因为它们小于或等于截止日期 2008-08-10。
最终的数据集应该是这样的
Col1 Col2 Col3 CutoffDate
12001 Yes 2008-08-10 2008-08-10
12001 Yes 2008-08-04 2008-08-10
我知道 R 中的子集函数,但不知道该怎么做,非常感谢您的帮助。
你可以只使用常规比较
dat[dat$Col3 <= dat$CutoffDate, ]
# Col1 Col2 Col3 CutoffDate
# 3 12001 Yes 2008-08-10 2008-08-10
# 4 12001 Yes 2008-08-04 2008-08-10
假设 Col3 和 CuttoffDate 是 class "Date"
或者最好是,
with(dat, dat[Col3 <= CutoffDate, ])
您可以使用 subset()
:
df <- data.frame(Col1=c(12001,12001,12001,12001),Col2=c('Yes','Yes','Yes','Yes'),Col3=as.Date(c('2008-08-15','2008-08-22','2008-08-10','2008-08-04')),CutoffDate=as.Date(c('2008-08-10','2008-08-10','2008-08-10','2008-08-10')));
subset(df,Col3<=CutoffDate);
## Col1 Col2 Col3 CutoffDate
## 3 12001 Yes 2008-08-10 2008-08-10
## 4 12001 Yes 2008-08-04 2008-08-10
如果您使用的是 dplyr:
library(dplyr)
df <- data.frame(Col1 = c(12001, 12001, 12001, 12001),
Col2 = c("Yes", "Yes", "Yes", "Yes"),
Col3 = as.Date(c("2008-08-15", "2008-08-22", "2008-08-10", "2008-08-04")),
CutoffDate = as.Date(c("2008-08-10", "2008-08-10", "2008-08-10", "2008-08-10")))
df %>% filter(Col3 <= CutoffDate)