Jos*_*ien 16
这是我要做的:
library(xts)
data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')
x <- sample.xts['2007']
x[!weekdays(index(x)) %in% c("Saturday", "Sunday")]
Run Code Online (Sandbox Code Playgroud)
编辑:Joshua Ulrich在评论中指出了一个更好的解决方案,使用.indexwday()一系列内置访问器函数来提取xts类对象的索引.此外,与Dirk Eddelbuettel的解决方案一样,以下内容应与区域设置无关:
x[.indexwday(x) %in% 1:5]
Run Code Online (Sandbox Code Playgroud)
通过计算给定日期的星期几和子集.在这个例子中,我使用了一个Date类型,但是强制转换POSIXlt为POSIXct日内时间戳以相同的方式工作.
> mydates <- Sys.Date() + 0:6
> mydates
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04"
+ "2012-02-05" "2012-02-06"
> we <- sapply(mydates, function(d) { as.POSIXlt(d)$wday}) %in% c(0, 6)
> we
[1] FALSE FALSE FALSE FALSE TRUE TRUE FALSE
> mydates[ ! we ]
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-06"
>
Run Code Online (Sandbox Code Playgroud)
这真的不是一个xts问题,而是基本的日期处理.