2016-04-25 109 views
-1

我試圖將兩個向量的日期合併到一個向量中。我一直在使用lubridate軟件包使用日期。將日期向量合併後的日期變化R

首先我創建日期的兩個向量:

library(lubridate) 

mydate <- mdy("04/01/2016") 
mydate_range <- mydate + (1:12)*months(1) 

anotherdate_range <- mdy("05/01/2017") + (1:12)*months(1) 

檢查mydate_range和anotherdate_range這些似乎都工作得很好。

但是,當我試圖將這些組合成一個向量時,事情變得很奇怪。

combineddates <- c(mydate_range, anotherdate_range) 
combineddates 
[1] "2016-04-30 19:00:00 CDT" "2016-05-31 19:00:00 CDT" "2016-06-30 19:00:00 CDT" 

組合日期的第一天是「2016-04-30」。在我使用c()函數將它們合併之前,mydate_range的第一個日期是「2016-05-01」。

不知道爲什麼這改變了。我應該如何加入這些日期向量?

+1

如何結合兩個'Date'對象的'POSIXct/lt'日期時間?我無法複製你的例子。 – thelatemail

+0

我同意@thelatemail,不能複製。對我很好,我得到了Date [1:24],格式:「2016-05-01」「2016-06-01」「2016-07-01」「2016-08-01」「」2016-09- 01「...' – ano

回答

1

日期更改的原因是由於時區調整導致的轉換。 2016-04-30 19:00:00 CDT與2016-05-01 GMT相同。很可能你的初始序列是在格林尼治標準時間,並且在它轉換到當地時間的過程中。 我覺得最好在初始定義中定義時區,並且應始終保持一致。

+0

儘管這可能是由於我知道R的基本Date對象沒有與它們關聯的時區。在某處,OP已經將事情轉換爲日期時間,可能是我猜測的'POSIXct'對象。 – thelatemail

+0

我還沒有使用lubridate足以理解它。但是如果附加時間段,ymd將返回一個POSIX對象。 – Dave2e

+0

實際上,我看到合併日期向量後時區發生變化,即使時區是在原始的兩個區域中指定的並且是相同的。這也是一個時間戳。我正在使用應該使用的lubridate,但即使是lubridate也不完美。我的快速解決方法是轉換爲字符,合併矢量,將時間重新轉換爲日期,並重新指定時間戳。這個答案看起來像一個明顯的soltuion,但不幸的是日期的事情從來不明顯。 – rrr