2012-01-30 69 views
0

我想从这个例子中了解如果lubridate可以应用apply.daily但不太明白如何做到这一点。 我可以得到任何参考使用lubridate与apply.daily这样我就可以使用apply.daily不包括周末做lubridate与apply.daily工作

Stackoverflow: Wrong week-ending date using 'to.weekly' function in 'xts' package

编辑:使用里奇棉花的例子为指导,我写了下面:

> is.weekend <- function(x) { 

+ w <- as.POSIXlt(x) 

+ w %in% c(1,7) 

+ } 

> apply.daily(core[!is.weekend(x)],dfun) 

Error in as.POSIXlt.default(x) : 

    do not know how to convert 'x' to class "POSIXlt" 

> apply.daily(core[!is.weekend(index(x))],dfun) 

Error in as.POSIXlt.numeric(x) : 'origin' must be supplied 

> alpha <- core[!is.weekend(index(x))] 

Error in as.POSIXlt.numeric(x) : 'origin' must be supplied 

> 

我的错误在哪里?我错过了一个特定的图书馆吗?

+0

什么是您传递给'is.weekend'的变量'x'?不管它是什么,它都不能转换成'POSIXlt'。另外,检查'POSIXlt'类的对象是否等于1或7是行不通的。你需要检查%c(0,6)中的'w $ wday%'或者像我推荐的那样使用'lubridate :: wday'函数。 – 2012-01-30 16:27:07

+0

明白了 - 谢谢! – user1155299 2012-01-30 17:38:06

回答

2

创建您的时间系列。

x <- today() + hours(0:(24 * 14)) 
time_series <- xts(rnorm(length(x)), x) 

写一个函数来检查一个日期是否发生在周末。

is.weekend <- function(x) 
{ 
    day_of_week <- wday(x, label = TRUE) 
    day_of_week %in% c("Sat", "Sun") 
} 

排除您拨打apply.daily的电话。

apply.daily(time_series[!is.weekend(x)], max) 
+0

关于为什么我得到上述错误的任何想法。 – user1155299 2012-01-30 16:18:30