2016-06-15 8 views
0

동물 추적 데이터 세트를 작업 중이며 각 개인의 GPS 위치 별 시간 스탬프의 시간차를 계산해야합니다.R 패키지 "plyr"에 ddply를 사용하여 새 열 만들기

ID Time 
B1 6:57 
B1 6:59 
B1 7:03 
B1 7:10 
B2 6:34 
B2 6:45 
B2 6:47 
B2 6:48 
B3 6:23 
B3 6:35 
B3 6:46 
B3 6:47 

나는 다음과 같은 사용 시간 차이를 계산하려고 : 편의상 , 내 데이터는 다음과 같습니다 (지금은 다른 변수에 대해 잊지 수 있습니다)

나는이 오류 그러나
ddply(df, "ID",transform,timediff=diff(Time)) 

메시지 :

data.frame에서 오류 (리스트 (ID에서의 C = (1L, 1L, 1L, 1L), 시간 = 8시 11분) : 4, 3 :
인수 행수 상이한 의미

각 Animal의 첫 번째 행에 값이 없다고 가정합니다. 이 문제를 해결할 방법이 있습니까? 어떤 도움이라도 대단히 감사합니다.

+1

시도'c (NA, diff (시간)) ' – Bulat

+0

빠른 답장을 보내 주셔서 감사합니다 !!! 시도했습니다. "+", 그래서 아직 뭔가를 놓치고 있습니다. – Splash1199

+1

닫는 중입니다. 브래킷. –

답변

0

당신은 우리는 '시간'날짜 클래스입니다 가정 base R

df1$timediff <- with(df1, ave(as.numeric(Time), ID, FUN = function(x) c(NA, diff(x)))) 

에서 ave을 사용할 수 있습니다 data.table

library(data.table) 

# create a lag variable of time by ID 
setDT(data)[, timediff:=c(NA, Time[-.N]), by=ID] 

dt 
#>  ID Time timediff 
#> 1: B1 6:57  NA 
#> 2: B1 6:59  8 
#> 3: B1 7:03  9 
#> 4: B1 7:10  10 
#> 5: B2 6:34  NA 
#> 6: B2 6:45  2 
#> 7: B2 6:47  4 
#> 8: B2 6:48  6 
#> 9: B3 6:23  NA 
#> 10: B3 6:35  1 
#> 11: B3 6:46  3 
#> 12: B3 6:47  5 
0

를 사용할 수 있습니다.