1

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

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

4

1 回答 1

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])))
于 2013-10-21T19:11:46.677 回答