2013-10-21 37 views
1

我有一個問題,計算與變量中的前一個觀察天數的差異,並將該差異放入一個新變量中。時間戳存儲在一個變量(日期)數據幀(DF)的年,月,日,如:用前一次觀察的天數差異創建新變量?

date 
1993-05-05 
1993-05-14 
1993-06-27 
1993-06-27 
1993-07-10 
1993-07-27 
1993-08-23 
1993-09-04 

我想創建一個不同的新變量(df$days.prev)。預期的輸出應該是這樣的:

date  day.prev 
1993-05-05 
1993-05-14 9 
1993-06-27 44 
1993-06-27 0 
1993-07-10 13 
1993-07-27 17 
1993-08-23 27 
1993-09-04 12 

我試着用

df$days.prev <- diff(df$date,lag=1,difference=1) 

要做到這一點,但得到一個錯誤信息:

Error in $<-.data.frame (*tmp*, "days.prev", value = c(353, 718, 441, : 
replacement has 990 rows, data has 991 

這個問題似乎很明顯對我說:第一個觀察沒有先前的觀察,因此沒有差別可以計算。我該如何解決這個問題?

+0

...使用'C()'只是在開頭加0或NA? – joran

回答

2

試試這個:

> transform(df, day.prev= c(NA,diff(as.Date(df[,1])))) 
      V1 day.prev 
1 1993-05-05  NA 
2 1993-05-14  9 
3 1993-06-27  44 
4 1993-06-27  0 
5 1993-07-10  13 
6 1993-07-27  17 
7 1993-08-23  27 
8 1993-09-04  12 

或者

df$days.prev <- c(NA,diff(as.Date(df[,1]))) 
+0

您的解決方案沒有給出所需的結果,但它指向了正確的方法。通過代碼的小改動,我得到了期望的結果:'df $ days.prev < - c(NA,diff(as.Date(df $ date)))' – Jaap