我需要在R中创建一系列日期和时间,在15分钟内增加.目前,我这样做:
datestimes=seq(as.POSIXlt("2011-01-01 00:00:00"), as.POSIXlt("2015-09-30 23:45:00"), by="15 min")
我应该在一年中每次都读一次.问题是因为它正在调整BST,所以我在10月的某些日期得到两个值.
anm=aggregate(datestimes, by=list(datestimes$datestimes), FUN=length) anm[which(anm$datestimes>1),] Group.1 datestimes X.Date. 28993 2011-10-30 01:00:00 2 2 28994 2011-10-30 01:15:00 2 2 28995 2011-10-30 01:30:00 2 2 28996 2011-10-30 01:45:00 2 2 63933 2012-10-28 01:00:00 2 2 63934 2012-10-28 01:15:00 2 2 63935 2012-10-28 01:30:00 2 2 63936 2012-10-28 01:45:00 2 2 98873 2013-10-27 01:00:00 2 2 98874 2013-10-27 01:15:00 2 2 98875 2013-10-27 01:30:00 2 2 98876 2013-10-27 01:45:00 2 2 133813 2014-10-26 01:00:00 2 2 133814 2014-10-26 01:15:00 2 2 133815 2014-10-26 01:30:00 2 2 133816 2014-10-26 01:45:00 2 2
我尝试使用as.chron命令,因为这不使用时区,但它不允许增加15分钟,这是我需要的.
问题是因为它正在调整BST,所以我在10月的某些日期得到两个值.
这是因为"回落"(夏令时调整的助记符在秋季增加了一个小时)在人类时间发生,这是默认情况下你得到的,除非你覆盖它.
R> seq(as.POSIXlt("2012-10-28 00:00:00", tz="UTC"), + as.POSIXlt("2012-10-28 03:00:00", tz="UTC"), by="15 min") [1] "2012-10-28 00:00:00 UTC" "2012-10-28 00:15:00 UTC" [3] "2012-10-28 00:30:00 UTC" "2012-10-28 00:45:00 UTC" [5] "2012-10-28 01:00:00 UTC" "2012-10-28 01:15:00 UTC" [7] "2012-10-28 01:30:00 UTC" "2012-10-28 01:45:00 UTC" [9] "2012-10-28 02:00:00 UTC" "2012-10-28 02:15:00 UTC" [11] "2012-10-28 02:30:00 UTC" "2012-10-28 02:45:00 UTC" [13] "2012-10-28 03:00:00 UTC" R>
我在这里展示的示例涵盖了与上面相同的子集,但没有后退,因为我们现在将UTC强加为时区.而UTC的建设没有夏令时调整.