我有一个文件,我需要只选择 2004 年之前出生的 child 。
示例
n_child sex date_born
1 M 20/03/2002
2 M 09/08/2001
3 F 01/09/2003
4 M 07/05/2003
5 M 12/09/2004
6 F 19/08/2004
我要
n_child sex date_born
1 M 20/03/2002
2 M 09/08/2001
3 F 01/09/2003
4 M 07/05/2003
我尝试了以下方法,但没有成功:
datesub <- (as.POSIXlt(df$date_born)$year)<2004
dat <- df[datesub, ]
最佳答案
如果您愿意使用另一个软件包(lubridate),这应该可行。除此之外,Lubridate 还可以解析日期。只需使用 ymd('datestring')
,其中 y 是年份,m 是月份,d 是天数,按照它们在您尝试解析的字符串中出现的顺序排列。
> df
n_child sex date_born
1 1 M 20/03/2002
2 2 M 09/03/2001
3 3 F 01/09/2003
4 4 M 07/05/2003
5 5 M 12/09/2004
6 6 F 19/08/2004
> require(lubridate)
> df$dateborn <- dmy(df$date_born)
6 parsed with %d/%m/%Y
> datesub <- df[df$date_born < ymd(20040101),]
1 parsed with %Y%m%d
> datesub
n_child sex date_born
1 1 M 2002-03-20
2 2 M 2001-03-09
3 3 F 2003-09-01
4 4 M 2003-05-07
关于r - 在 R 中按日期选择子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244077/