[英]How to define holidays for is.holiday() chron package in R
我正在嘗試使用chron
的is.holiday()
函數,但是我無法使用它。 文檔說要修改.Holiday
對象與你想要使用的假期,但是我對is.holiday()
似乎沒有檢測到.Holiday
所做的更改。 有人可以提供一個加載假期的適當方法的例子嗎?
這是非平凡的,可能應該被稱為chron
維護者作為bug。
library(chron)
library(timeDate)
hlist <- c("CAVictoriaDay","CACanadaDay","CALabourDay")
(ss <- dates(sapply(sapply(hlist,holiday,year=2011),as.Date)))
.Holidays <- ss
(有人誰實際上R中日期的作品往往比我做的大概有前面的東西更優雅的解決方案,而沒有雙sapply
事情...)
但這並沒有改變重要的事情,即chron
命名空間中的Holidays
版本:
chron::.Holidays ## no change
線索在這里: 覆蓋在命名空間中導入的函數
命名空間魔術:
unlockBinding(".Holidays", as.environment("package:chron"))
assignInNamespace(".Holidays", .Holidays, ns="chron",
envir=as.environment("package:chron"))
assign(".Holidays", .Holidays, as.environment("package:chron"))
lockBinding(".Holidays", as.environment("package:chron"))
現在看,它有效:
chron::.Holidays
測試出來:
yrvec <- seq.Date(as.Date("2011-01-01"),
as.Date("2011-12-31"),by="day")
plot(is.holiday(yrvec),axes=FALSE)
axis.Date(side=1,yrvec)
我試圖做同樣的事情,發現這篇較老的帖子。 我不需要修改.Holidays
:
library(timeDate);library(chron)
hlist <- c("USChristmasDay","USGoodFriday","USIndependenceDay","USLaborDay",
"USNewYearsDay","USThanksgivingDay")
myholidays <- dates(as.character(holiday(2000:2013,hlist)),format="Y-M-D")
> is.holiday(as.Date("2013-11-28"),myholidays)
[1] TRUE
> chron::.Holidays
New Years Day Memorial Day Independence Day Labor Day Thanksgiving Christmas
01/01/92 05/25/92 07/04/92 09/07/92 11/26/92 12/25/92
在仔細研究了這個主題之后,我發現使用RQuantLib包時這個解決方案特別簡單,所以在這方面RQuantLib可能會更簡單。
install.packages("RQuantLib")
library(RQuantLib)
isBusinessDay(calendar="WeekendsOnly", dates=yourdatesofinterest)
您可以使用不同的日歷修改此代碼,以便在不同國家/地區的周末添加不同的假期集(僅作為示例,但它們還有更多)。
isBusinessDay(calendar="UnitedStates", dates=yourdatesofinterest)
isBusinessDay(calendar="UnitedStates/Settlement", dates=yourdatesofinterest)
isBusinessDay(calendar="UnitedStates/NYSE", dates=yourdatesofinterest)
isBusinessDay(calendar="Sweden", dates=yourdatesofinterest)
isBusinessDay(calendar="Mexico", dates=yourdatesofinterest)
我希望它對某人有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.