gpt4 book ai didi

r - 设置 to.weekly 使用的星期几

转载 作者:行者123 更新时间:2023-12-01 15:15:39 25 4
gpt4 key购买 nike

我正在尝试将 xts 对象中包含的每日数据(仅限工作日)的时间序列转换为每周数据的时间序列。具体来说,我希望生成的时间序列包含原始数据的周末条目(即一周的最后一个工作日)。我一直在尝试使用 xts 包的 to.weekly 函数来实现这一点。

在关于另一个问题 (Wrong week-ending date using 'to.weekly' function in 'xts' package) 的讨论中,下面的示例代码实现了我所需要的。但是,当我运行代码时,to.weekly 使用星期一作为每周数据的代表。

我想知道哪种全局设置可能允许我强制 to.weekly 使用星期五作为一周的代表。

示例代码:

library(lubridate); library(xts)   
test.dates <- seq(as.Date("2000-01-01"),as.Date("2011-10-01"),by='days')
test.dates <- test.dates[wday(test.dates)!=1 & wday(test.dates)!=7] #Remove weekends
test.data <- rnorm(length(test.dates),mean=1,sd=2)
test.xts <- xts(x=test.data,order.by=test.dates)
test.weekly <- to.weekly(test.xts)
test.weekly[wday(test.weekly, label = TRUE, abbr = TRUE) != "Fri"]

最佳答案

test.dates <- test.dates[wday(test.dates)==6]
tail(wday(test.dates, label = TRUE, abbr = TRUE))
#[1] Fri Fri Fri Fri Fri Fri
#Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat

好的。将未说明的要求添加到问题中:

require(timeDate)
require(lubridate)
startDate <- as.Date("2000-01-03")
endDate <- as.Date("2011-10-01")
AllDays <- as.timeDate(seq(startDate, endDate, by="day"))
is.wrk <- isBizday(AllDays, holidays = holidayNYSE(), wday = 1:5)
is.wrkdt <- as.Date(names(is.wrk)[is.wrk])
endweeks <- tapply(is.wrkdt, paste(year(is.wrkdt),week(is.wrkdt), sep = ""), max)
head(as.Date(endweeks, origin="1970-01-01"))
# 1 2 3 4 5 6
#"2011-01-06" "2011-01-13" "2011-01-20" "2011-01-27" "2011-02-03" "2011-02-10"

所以你想要:

 as.Date(endweeks, origin="1970-01-01")

关于r - 设置 to.weekly 使用的星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com