2013-10-21 26 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