2016-04-23 60 views
3

我有一個包含觀察數據的框架以及它們的製作日期。日期是從csv文件中讀取的,但只包括月份和日期。 R假設他們都是從2016年開始的。我知道日期從大多數到最近都是按順序排列的,那麼我如何才能在正確的年份添加?R:更正R中日期的年份

輸入按從大到小的順序排列。

Input   Output 
1/1    1/1/2016 
12/1    12/1/2015 
11/1    11/1/2015 
1/1    1/1/2015 
12/1    12/1/2014 
1/1    1/1/2014 
12/1    12/1/2013 

謝謝你的時間!

+0

你想在2015年只更改'12/03'嗎? – akrun

+0

嗨,akrun,還有更多的日期。我只是想解釋一下自己。謝謝!我可以從12/03到1/01然後到11/11和11/11應該在2014 – jw123456

+1

在那種情況下,解釋不清楚 – akrun

回答

2

如果數據按照OP的帖子中顯示的順序排列,我們可以使用sub從最初的vector('v1')中提取月份部分,轉換爲數字,得到相鄰元素的差異,檢查它是否更大比0,cumsum邏輯vector,使用該分組索引來傳遞年份值,最後是paste它與初始向量。

v2 <- paste(v1, c(2016:2013)[cumsum(c(TRUE, 
      diff(as.numeric(sub("/.*", "", v1))) > 0))], sep="/") 

如果我們需要轉換爲「日期」類,使用as.Date用正確的format

as.Date(v2, "%m/%d/%Y") 
#[1] "2016-01-01" "2015-12-01" "2015-11-01" "2015-01-01" "2014-12-01" 
#[6] "2014-01-01" "2013-12-01" 
+0

很好,那會更好!謝謝!如果日期需要延續到2013年,那麼2013年到2010年的工作會有所變化嗎? – jw123456

+0

它確實有用!謝謝! – jw123456

+0

@ jw123456是的,你可以從2016年開始使用:1800左右,它只會採用基於數值索引 – akrun