2013-04-15 3 views
2

데이터를 시간 단위로 집계하려고합니다. 매일은 매우 간단합니다 :xts/zoo가있는 R에 apply.hourly가없는 이유는 무엇입니까?

apply.daily(X2,mean) 

왜 기능은 시간당 거기에 무엇입니까? 나는

hr.means <- aggregate(X2, format(X2["timestamp"],"%Y-%m-%d %H")) 

을 시도하고 트림 인수와 함께 항상 오류가 발생했습니다. apply.daily와 비슷한 더 쉬운 기능이 있습니까? 5 분 평균을 집계하려면 어떻게해야합니까? 데이터는 분당 값입니다.

"timestamp", value 
"2012-04-09 05:03:00",2 
"2012-04-09 05:04:00",4 
"2012-04-09 05:05:00",5 
"2012-04-09 05:06:00",0 
"2012-04-09 05:07:00",0 
"2012-04-09 05:08:00",3 
"2012-04-09 05:09:00",0 
"2012-04-09 05:10:00",1 

xts 및 zoo를 사용하고 있습니다.

+0

내 눈에는 예 : apply.hourly하고 apply.minutely 패키지에! –

답변

10

period.apply(X2, endpoints(X2, "hours"), mean) 

apply.daily

단순히 위의 래퍼 시도 :

> apply.daily 
function (x, FUN, ...) 
{ 
    ep <- endpoints(x, "days") 
    period.apply(x, ep, FUN, ...) 
} 
+0

지금까지 감사드립니다. 5 분주기에 대한 제안이 있습니까? –

+1

'endpoints (X2, "minutes", 5)' – eddi

+0

을 사용하면 수동으로 시작점을 설정할 수 있습니까? 05:00, 05:05, ... –

2
hr.means <- aggregate(X2, format(time(X2),"%y-%m-%d %H"), mean) 

이 잘 작동합니다.

0

응답 2 부 :

내가 5 분의 평균을 집계하고 싶다면?

@eddit 이미 위의 댓글에서 언급 한 바와 같이 :

df <- read.table(header=TRUE, sep=",", stringsAsFactors=FALSE, text=" 
timestamp, value 
2012-04-09 05:03:00,2 
2012-04-09 05:04:00,4 
2012-04-09 05:05:00,5 
2012-04-09 05:06:00,0 
2012-04-09 05:07:00,0 
2012-04-09 05:08:00,3 
2012-04-09 05:09:00,0 
2012-04-09 05:10:00,1") 
X2 <- xts(df$value, as.POSIXct(df$timestamp)) 

X2.5min <- period.apply(X2, endpoints(X2, "minutes", 5), mean) 

내가 얻을 : 5시 4분 0초 - 4; 05:09:00 - 5, ...하지만 어쩌면 첫 번째 값을 05:00:00으로 설정하고 05:05:00으로 계속 진행하는 것이 더 쉬울 수도 있습니다. 나중에 파일을 병합하면 더 쉽게 만들 수 있습니다. 시작과 타임 스텝. 실제로

:

> X2.5min 
        [,1] 
2012-04-09 05:04:00 3.0 
2012-04-09 05:09:00 1.6 
2012-04-09 05:10:00 1.0 

대런 쿡 over at Cross Validated 같은 문제에 직면하고 기능 align.time.down를 썼다 :

아래로 시간을 조정하는 데 사용할 수
align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)} 

:

X2.5mindown <- align.time.down(X2.5min, 5 * 60) 
X2.5mindown 
        [,1] 
2012-04-09 05:00:00 3.0 
2012-04-09 05:05:00 1.6 
2012-04-09 05:10:00 1.0 
+0

나는 Darren에게 주석을 달았으므로 관측치를 시간에 우선 순위를 매기는 것이 좋지 않은 것처럼 보인다. 특히 집계 결과물을 다른 시계열과 병합하려는 경우에는 더욱 그렇다. –