2

我编写了一个函数,当提供一系列日期、一周中特定日期的名称以及给定月份(例如,每个月的第二个星期五)中该天的发生情况时,它将返回相应的日期。但是,它不是很快,我也不是 100% 相信它的稳健性。R 中是否有一个包或一组函数可以对 POSIX 对象执行这些类型的操作?提前致谢!

4

2 回答 2

8

使用zoo 包中zoo 快速参考小插图nextfri显示的一个线源的函数,以下给出了第二个星期五,其中第一个是一个月的第一个星期五:dd"Date"

library(zoo)
d <- as.Date(c("2011-09-01", "2011-10-01"))
nextfri(d) + 7
## [1] "2011-09-09" "2011-10-14"

nextfri不是 zoo 包的一部分——你需要自己输入——但它只有一行)

下面给出了星期几,其中 0 是星期日,1 是星期一,依此类推。

as.POSIXlt(d)$wday
## [1] 4 6

如果您真的只处理日期而不是日期时间,那么您应该使用"Date"类而不是"POSIXt"类以避免时区错误。请参阅R News 4/1中的文章。

于 2011-09-26T17:32:39.380 回答
0

timeDate软件包具有一些功能;我将这段代码基于一些打包的代码。这是针对Dates 的,timeDate 具有基础的 POSIX 类型。

nthNdayInMonth <- function(date,nday = 1, nth = 1){
  wday <- (as.integer(date) - 3) %% 7
  r <- (as.integer(date) + (nth -1) * 7 + (nday - wday)%%7)
  as.Date(r,"1970-01-01")
}
于 2011-09-26T17:43:28.803 回答