2014-04-24 3 views
0

3 초의 큰 측정 파일이 있습니다 (here은 그 중 일부 임). 내가 값은 평균해야 삼분의 업데이트 간격과 시계열로 변환해야 할 다음 단계에다른 간격으로 시계열을 3 초로 변환 한 시계열을 변환하십시오.

library(zoo) 
fmt<-"%d.%m.%y %H:%M:%S" 
dat <- read.zoo("~/Institut/Monitor/UA_test.csv",header=TRUE, 
      dec=".",sep='\t',tz='',format=fmt,index=1) 

: 나는 시계열을했다. 가장 간단한 방법은 무엇입니까?

+2

입력란에 질문을 입력하십시오. –

+0

게시물의 파일에 대한 링크를 제공합니다 (https://drive.google.com/file/d/0B0bqVf9TmYwARTdKblhSZGtDQVk/edit?usp=sharing). 아직 뭔가 할 수 있을까요? – Maxim

답변

0

사용 aggregate.zoo : dec="."index=1 그래서 그들은 read.zoo 줄에서 생략 할 수 read.zoo에서 기본적으로 사용되는 것을

aggregate(dat, as.POSIXct(cut(index(dat), "3 min")), mean) 

참고.

+0

고마워요! 완벽하게 작동합니다! – Maxim

0

당신은 period.apply의 두 번째 인수는 각각 3 분 소요 기간의 마지막의 행 번호의 벡터이다 xts 패키지

library(xts) 
(x <- period.apply(dat, endpoints(dat, "minutes", 3), mean)) 
#       UA  UB  UC 
#2014-04-13 00:59:57 209.1605 226.4110 213.7115 
#2014-04-13 01:02:57 215.4467 226.7065 211.3325 
#2014-04-13 01:05:57 216.6252 225.4948 214.1290 
#2014-04-13 01:07:45 218.4633 219.5589 214.1325 

에서 period.apply를 사용할 수 있습니다. endpoints(dat, "minutes", 3)은이를 계산합니다.

당신은 타임 스탬프 대신 각 기간의 마지막 타임 스탬프가되는, 당신은 align.time을 사용할 수 있습니다 "반올림"되도록하려면,하지만 먼저 xts로 변환해야 할 것이다, 그래서 align.time은 객체가 xts 것을 요구한다.

xx <- as.xts(x) 
align.time(xx, n=60*3) 
#       UA  UB  UC 
#2014-04-13 01:00:00 209.1605 226.4110 213.7115 
#2014-04-13 01:03:00 215.4467 226.7065 211.3325 
#2014-04-13 01:06:00 216.6252 225.4948 214.1290 
#2014-04-13 01:09:00 218.4633 219.5589 214.1325 
+0

고맙습니다. 정렬 시간은 괜찮아 보입니다. – Maxim

관련 문제