2013-10-21 3 views
1

변수에서 이전 관측과의 차이를 계산하고 그 차이를 새 변수에 넣는 데 문제가 있습니다. 나는 차이에 새로운 변수 (df$days.prev)를 만들 싶습니다이전 관측과의 차이가있는 새 변수 생성?

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)에 저장됩니다. 내가

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

이 작업을 수행하기 위해 시도했지만 오류 메시지가 도착

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 

:

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