I이 같은 dataframe을 통해 큰 dataframe 각 행 (진짜 훨씬 크다) 다음 time
변수 차량 비디오 장치에 의해 식별 될 수있는 시간을 나타낸다마크 두 변수
time<-c(as.POSIXct('2011-11-11 06:00:00'),as.POSIXct('2011-11-11 06:05:00'),as.POSIXct('2011-11-11 07:05:00'),
as.POSIXct('2011-11-11 07:10:00'),as.POSIXct('2011-11-11 07:13:00'),as.POSIXct('2011-11-11 07:33:00'),
as.POSIXct('2011-11-11 05:05:00'),as.POSIXct('2011-11-11 06:05:00'),as.POSIXct('2011-11-11 06:20:00'),
as.POSIXct('2011-11-11 09:05:00'))
plate<-c('a','a','a','b','c','d','e','e','e','e')
df<-data.frame(time,plate)
. plate
변수는 차량의 판을 나타냅니다. 데이터 프레임은 첫 번째로 plate
및 두 번째로 time
순으로 정렬되었습니다.
이 점을 감안할 때 행을 표시하여 각 차량의 여행을 파기하고 싶습니다. 다른 차량 (plates
)은 확실히 다른 여행을 나타냅니다. 한 차량의 경우, 한 여행 내에서 식별 된 시간차가 30 분보다 짧아야하며 그렇지 않은 경우 행은 다른 여행에 속해야합니다. 내 방법으로
, 나는 다음과 같은 코드로이 작업을 수행합니다
trip<-vector()
trip[1]<-1
time_diff<-as.POSIXct('2011-11-11 07:00:00')-as.POSIXct('2011-11-11 06:30:00')
for (x in 2:nrow(df)) {
if (!df$plate[x]==df$plate[x-1]) (trip[x]<-trip[x-1]+1
) else{if (df$time[x]-df$time[x-1]<time_diff) (trip[x]<-trip[x-1]
) else (trip[x]<-trip[x-1]+1)}
}
df<-cbind(df,trip)
는하지만, 내 df
이 7 개 이상의 백만 행을 포함