我有一个如下所示的数据集:
9/1/2014 00:00:25
9/1/2014 00:00:28
9/1/2014 00:00:40
还有很多观察...
我想创建一个列来指示日期是否是假期,所以我使用了该is.holiday()
功能。这是我的代码:
final_uber_4$is_holiday <- is.holiday(final_uber_4$interv)
问题是它对所有观察结果都返回 0,尽管我确定我的数据集中有假期。
我有一个如下所示的数据集:
9/1/2014 00:00:25
9/1/2014 00:00:28
9/1/2014 00:00:40
还有很多观察...
我想创建一个列来指示日期是否是假期,所以我使用了该is.holiday()
功能。这是我的代码:
final_uber_4$is_holiday <- is.holiday(final_uber_4$interv)
问题是它对所有观察结果都返回 0,尽管我确定我的数据集中有假期。
我假设您正在使用包中的is.holiday
功能chron
。我建议不要使用该软件包;R 中的日期函数自编写以来已得到改进,因此不再需要。
如果您想使用is.holiday
,您需要以chron
期望的格式提供假期列表。这并不容易;看到这个问题如何从 2016 年开始为 R 中的 is.holiday() chron 包定义假期以进行讨论。
但如果您提供假期列表,则不需要is.holiday
. 只需使用%in%
. 例如,
holidays <- as.Date(c(NewYears = "2014-01-01", Christmas = "2014-12-25"))
# Add more to the list above...
# Convert your data plus a holiday to POSIXct format:
interv <- as.POSIXct(c("9/1/2014 00:00:25",
"9/1/2014 00:00:28",
"9/1/2014 00:00:40",
"1/1/2014 00:00:00"), format = "%m/%d/%Y %H:%M:%S")
# Extract the date:
dates <- as.Date(interv)
# Test if you've got a holiday:
dates %in% holidays
这给了我
[1] FALSE FALSE FALSE TRUE
在最后。