나는 시퀀스를 식별하고 시퀀스의 지속 시간을 분 단위로 계산하는 함수를 사용하고 있습니다. I는 최종 단계에서 데이터 결과 cbind 때, 시간은 반환 아직 이웃하는 컬럼cbind가 특정 열에서 NA를 반환하는 함수
d<-read.table(text='Date.Time Aerial
794 "2012-10-01 08:18:00" 1
795 "2012-10-01 08:34:00" 1
796 "2012-10-01 08:39:00" 1
797 "2012-10-01 08:42:00" 1
798 "2012-10-01 08:48:00" 1
799 "2012-10-01 08:54:00" 1
800 "2012-10-01 08:58:00" 1
801 "2012-10-01 09:04:00" 1
802 "2012-10-01 09:05:00" 1
803 "2012-10-01 09:11:00" 1
1576 "2012-10-01 09:17:00" 2
1577 "2012-10-01 09:18:00" 2
804 "2012-10-01 09:19:00" 1
805 "2012-10-01 09:20:00" 1
1580 "2012-10-01 09:21:00" 2
1581 "2012-10-01 09:23:00" 2
806 "2012-10-01 09:25:00" 1
807 "2012-10-01 09:32:00" 1
808 "2012-10-01 09:37:00" 1
809 "2012-10-01 09:43:00" 1', header=TRUE, stringsAsFactors=FALSE, row.names=1)
#Give correct data type
d$Aerial<- as.numeric(d$Aerial)
d$Date.Time<- as.POSIXct(d$Date.Time)
함수 (공중 2 반복 서열을 확인 'NA'보다는 그 열의 원래의 값으로 리턴 그리고 순서의 듀레이션) :
fun1 <- function(data,aerial){
data_above <- 1L*(data$Aerial == aerial)
id_start <- paste(data$Date.Time[which(diff(c(0L,data_above))==1)])
id_end <- paste(data$Date.Time[which(diff(c(data_above,0L))== -1)])
res <- cbind(data[id_start,1:1],Duration=difftime(id_end,id_start, units='mins'))
return(res)
}
fun1(d,2)
결과 :
Duration
[1,] NA 1
[2,] NA 2
기간이 올바른지, 그러나 나는 데이터를 반환하는 데하고자하는 관련 컬럼에 있어야합니다 :
Date.Time Duration
[1,] 2012-10-01 09:11:00 1
[2,] 2012-10-01 09:21:00 2
내 실제 data.frame 많은 열보다는 Date.Time이 있고 아직도 내가 이런 식으로 할 거라고 이러한
완벽하게 작동합니다. 내가 한 일을 볼 수 있습니다. 설명 할 수있는 기회가 있습니까? –
아니요 대단히 감사합니다! –