无法根据日期列从 df 获取日期子集
cannot get subset of date from df based on date columns
我正在制作一份关于包含停车交易的数据框的报告。数据框有两个 POSIXct 变量,称为 start_time 和 end_time。它们的外观示例如下:
2019-11-25 10:35:00 UTC" "2019-11-28 18:21:00 UTC"
我想获取从 "2020-02-06"
到 "2020-03-23"
的数据框的一个子集。
这段时间肯定有交易发生,但是当我使用以下代码时,我得到了一个零观察的子集。
cutdate<- as.Date("2020-03-23",format ="%Y-%m-%d")
bdate<-as.Date("2020-06-02",format ="%Y-%m-%d")
dwdf%>% filter(as.Date(start_time) >= bdate & as.Date(end_time) < cutdate)->Bdf
我已经尝试过其他函数,例如 subset 等等,但我得到了同样的结果。然后,我尝试了一些更简单的方法,并尝试从变量 start_time 中查看是否创建了一个简单的布尔表达式,如
any(as.Date(dwdf$start_time) > bdate)
如果我得到任何 TRUE,但我得到的只是 false。我不明白为什么会这样,因为如果我这样做 range(start_time)
明显有开始时间晚于2月6日。
我也看过关于堆栈交换的类似问题,我不知道为什么我会得到不同的结果,因为我正在实施他们所说的。
我强烈推荐 lubridate
处理时间数据的包。
library(lubridate)
x <- c("2019-11-25 10:35:00 UTC", "2019-11-28 18:21:00 UTC")
x_datetime <- ymd_hms(x)
x_datetime < ymd(20191126)
[1] TRUE FALSE
这些函数(ymd
as in "year-month-day" or ymd_hms
as in year-month-day-hour-minute-second")可以很容易地将数据转换成日期格式。一旦有了这个,比较就不难了。
我正在制作一份关于包含停车交易的数据框的报告。数据框有两个 POSIXct 变量,称为 start_time 和 end_time。它们的外观示例如下:
2019-11-25 10:35:00 UTC" "2019-11-28 18:21:00 UTC"
我想获取从 "2020-02-06"
到 "2020-03-23"
的数据框的一个子集。
这段时间肯定有交易发生,但是当我使用以下代码时,我得到了一个零观察的子集。
cutdate<- as.Date("2020-03-23",format ="%Y-%m-%d")
bdate<-as.Date("2020-06-02",format ="%Y-%m-%d")
dwdf%>% filter(as.Date(start_time) >= bdate & as.Date(end_time) < cutdate)->Bdf
我已经尝试过其他函数,例如 subset 等等,但我得到了同样的结果。然后,我尝试了一些更简单的方法,并尝试从变量 start_time 中查看是否创建了一个简单的布尔表达式,如
any(as.Date(dwdf$start_time) > bdate)
如果我得到任何 TRUE,但我得到的只是 false。我不明白为什么会这样,因为如果我这样做 range(start_time)
明显有开始时间晚于2月6日。
我也看过关于堆栈交换的类似问题,我不知道为什么我会得到不同的结果,因为我正在实施他们所说的。
我强烈推荐 lubridate
处理时间数据的包。
library(lubridate)
x <- c("2019-11-25 10:35:00 UTC", "2019-11-28 18:21:00 UTC")
x_datetime <- ymd_hms(x)
x_datetime < ymd(20191126)
[1] TRUE FALSE
这些函数(ymd
as in "year-month-day" or ymd_hms
as in year-month-day-hour-minute-second")可以很容易地将数据转换成日期格式。一旦有了这个,比较就不难了。