创建与上一次观察的天数不同的新变量?

时间:2013-10-21 19:07:19

标签: r datediff

我在计算变量中先前观察的天数差异并将该差异放入新变量时遇到问题。时间戳存储在变量(日期)中的数据框(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

问题对我来说似乎很明显:对于第一次观察,没有先前的观察,因此无法计算差异。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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])))