2015-11-03 44 views
0

日期的下列矢量在一個串序列的形式給出的字符串的形式:如何滯後日期作爲R

d <- c("01/09/1991","01/10/1991","01/11/1991","01/12/1991") 

我想通過1個月示例性滯後此載體中,該裝置生成以下結構:

d <- c("01/08/1991","01/09/1991","01/10/1991","01/11/1991") 

我的數據更大,我也必須施加更高的滯後,但這似乎是我需要知道的基礎。 通過這樣做,我想在最後有相同的格式:("%d/%m/%Y)。這在R中怎麼做?我發現了幾個包(例如lubridate),但我總是必須在格式(字符串,日期和更多)之間進行轉換,所以它有點混亂,似乎很容易出錯。
編輯:一些更多的信息,爲什麼我想這樣做:我使用這個向量作爲矩陣的rownames,所以我更喜歡一個解決方案,最終的結果是一個字符串向量。

回答

3

這不使用任何軟件包。我們轉換爲"POSIXlt"類,減一月份部分和轉換回:

fmt <- "%d/%m/%Y" 
lt <- as.POSIXlt(d, format = fmt) 
lt$mon <- lt$mon - 1 
format(lt, format = fmt) 
## [1] "01/08/1991" "01/09/1991" "01/10/1991" "01/11/1991" 
+0

有趣的我不知道這可以用'POSIXlt'完成。謝謝。 – EDC

2

我的解決方案使用lubridate但它返回你想要在指定的格式:

require(lubridate) 
d <- c("01/09/1991","01/10/1991","01/11/1991","01/12/1991") 
format(as.Date(d,format="%d/%m/%Y")-months(1),'%d/%m/%Y') 

[1] "01/08/1991" "01/09/1991" "01/10/1991" "01/11/1991" 

然後,您可以更改的滯後和(如果你想)輸出(這是本部分:'%d/%m/%Y')由指定你想要的。

+0

泰爲入門,您的解決方案正常工作的! – EDC