-1

我有一个如下所示的数据集:

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,尽管我确定我的数据集中有假期。

4

1 回答 1

1

我假设您正在使用包中的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

在最后。

于 2019-02-02T11:39:38.323 回答