我从一个数据帧开始,这个数据帧从1-1827(5年)开始有数小时和一系列天。我知道第1天是2004-01-01。我添加了几天。我没有关于如何使这个成为约会的想法(所以我可以将其与其他数据相匹配)。
到目前为止看起来如何:
library(vegan)
data(dune)
data(dune.env)
sim <- simper(dune, dune.env$Management)
summary(sim, ordered = TRUE)
答案 0 :(得分:2)
使用data.table:
data.table(hour, as.Date(day_seq, origin = "2004-01-01"))
答案 1 :(得分:1)
以基数R:
seq(from=as.Date("2004-01-01"), length.out = 1827, by="1 days")
答案 2 :(得分:0)
据我了解,OP想要创建一系列5年以上的小时时间戳,这些时间戳应该显示在两列中,作为日期(类barlabel = c("Content1", "Content2.tooltip")
)和一天中的小时(整数)。 / p>
OP的方法是创建一天中的几小时和几天的交叉产品。
恕我直言,有一种更简单的方法,它使用Date
方法进行日期时间类:
seq()
library(data.table) library(lubridate) DT <- data.table(time = seq(ymd_h("2004-01-01 00"), ymd_h("2008-01-01 00"), by = "1 hour")) DT
现在,我们可以创建 time
1: 2004-01-01 00:00:00
2: 2004-01-01 01:00:00
3: 2004-01-01 02:00:00
4: 2004-01-01 03:00:00
5: 2004-01-01 04:00:00
---
43845: 2008-12-31 20:00:00
43846: 2008-12-31 21:00:00
43847: 2008-12-31 22:00:00
43848: 2008-12-31 23:00:00
43849: 2009-01-01 00:00:00
和date
列:
hour
DT[, date := as.Date(time)][, hour := hour(time)][]
OP的方法创造了近2000多行
time date hour
1: 2004-01-01 00:00:00 2004-01-01 0
2: 2004-01-01 01:00:00 2004-01-01 1
3: 2004-01-01 02:00:00 2004-01-01 2
4: 2004-01-01 03:00:00 2004-01-01 3
5: 2004-01-01 04:00:00 2004-01-01 4
---
43845: 2008-12-31 20:00:00 2008-12-31 20
43846: 2008-12-31 21:00:00 2008-12-31 21
43847: 2008-12-31 22:00:00 2008-12-31 22
43848: 2008-12-31 23:00:00 2008-12-31 23
43849: 2009-01-01 00:00:00 2009-01-01 0
str(df)
比我的方法:
'data.frame': 45700 obs. of 3 variables:
$ hour : int 0 1 2 3 4 5 6 7 8 9 ...
$ day_of_seq: int 0 1 2 3 4 5 6 7 8 9 ...
$ year : chr "nope" "2004" "2004" "2004" ...
str(DT)
这是由OP将当天的小时数编号为Classes ‘data.table’ and 'data.frame': 43849 obs. of 3 variables:
$ time: POSIXct, format: "2004-01-01 00:00:00" "2004-01-01 01:00:00" "2004-01-01 02:00:00" ...
$ date: Date, format: "2004-01-01" "2004-01-01" "2004-01-01" ...
$ hour: int 0 1 2 3 4 5 6 7 8 9 ...
- attr(*, ".internal.selfref")=<externalptr>
引起的,这意味着每个午夜出现两次,即实际日期的2400小时和后续日期的0000小时。
OP可能会这样做,但通常认为0:24
表示与2004-01-01 24:00:00
相同的实例。