我有超过3年的数据。对于每一年,我希望找到与该年的Jaunary 1相对应的日期。例如:
> x <- c('5/5/2007','12/31/2007','1/2/2008')
> #Convert to day of year (julian date) –
> strptime(x,"%m/%d/%Y")$yday+1
[1] 125 365 2我想知道如何做同样的事情,但随着时间的增加。但我还是有一天,而不是时间。有没有人能建议用哪种更好的方法找到有日期和时间的儒略历日期?
> x1 <- c('5/5/2007 02:00','12/31/2007 05:58','1/2/2008 16:25')
> #Convert to day of year (julian date) –
> strptime(x1,"%m/%d/%Y %H:%M")$yday+1
[1] 125 365 2我想要以十进制天数表示的输出,而不是这个结果。例如,第一个示例是125.0833333,依此类推。
非常感谢。
发布于 2013-03-19 11:08:18
您还可以使用POSIXct和POSIXlt表示以及来自xts的firstof函数。
x1 <- c("5/5/2007 02:00", "12/31/2007 05:58", "1/2/2008 16:25")
x1
## [1] "5/5/2007 02:00" "12/31/2007 05:58" "1/2/2008 16:25"
y <- as.POSIXlt(x1, format = "%m/%d/%Y %H:%M")
result <- mapply(julian, x = as.POSIXct(y), origin = firstof(y$year + 1900))
result
## [1] 124.083333 364.248611 1.684028如果不想使用xts,那么可以使用下面这样的代码
result <- mapply(julian,
x = as.POSIXct(x1, format = "%m/%d/%Y %H:%M", tz = "GMT"),
origin = as.Date(paste0(gsub(".*([0-9]{4}).*", "\\1", x1),
"-01-01"),
tz = "GMT"))
result
## [1] 124.083333 364.248611 1.684028https://stackoverflow.com/questions/15490614
复制相似问题