2013-05-29 1 views
2

나는 xts 개체를 사용합니다. 객체의 인덱스는 다음과 같습니다. 1 년 동안 매일 1 시간 동안 하나씩 있습니다.R 인덱스에서 특정 시간으로 검색

"2011-01-02 18:59:00 EST" 
"2011-01-02 19:58:00 EST" 
"2011-01-02 20:59:00 EST" 

열은 각 색인 항목과 연관된 값입니다. 내가하고 싶은 일은 전체 월요일에 18:59에있는 모든 월요일의 값의 표준 편차를 계산하는 것입니다. 해당 연도에는 52 개의 값이 있어야합니다.

weekdays() 기능을 사용하여 요일을 검색 할 수 있지만 내 문제는 18:59:00 또는 다른 시간과 같은 시간을 검색하고 있습니다.

답변

0

이 있습니다 (잊지 마세요 '인덱스'앞에 '를.'!) 함수의 .index* 가족을 사용할 수 있습니다

fxts[.indexmon(fxts)==0] # its zero-based (!) and gives you all the January values 
fxts[.indexmday(fxts)==1] # beginning of month 
fxts[.indexwday(SPY)==1] # Mondays 

require(quantmod) 

> fxts 
       value 
2011-01-02 19:58:00  1 
2011-01-02 20:59:00  2 
2011-01-03 18:59:00  3 
2011-01-09 19:58:00  4 
2011-01-09 20:59:00  5 
2011-01-10 18:59:00  6 
2011-01-16 18:59:00  7 
2011-01-16 19:58:00  8 
2011-01-16 20:59:00  9` 

fxts[.indexwday(fxts)==1] #this gives you all the Mondays 

을 시간을 부분 집합에 대한 당신이

fxts["T19:30/T20:00"] # this will give you the time period you are looking for 

를 사용 평일과 시간대를 합치면

fxts["T18:30/T20:00"] & fxts[.indexwday(fxts)==1] # to get a logical vector or 
fxts["T18:30/T21:00"][.indexwday(fxts["T18:30/T21:00"])==1] # to get the values 

>     value 
2011-01-03 18:58:00  3 
2011-01-10 18:59:00  6 
+0

감사합니다. – user1223862

1

을 사용하면됩니다.weekdays.indexhour의 조합으로 요인을 만들려면 split을 사용하여 xts 개체에서 관련 관찰을 선택하십시오.

set.seed(21) 
x <- .xts(rnorm(1e4), seq(1, by=60*60, length.out=1e4)) 
groups <- interaction(weekdays(index(x)), .indexhour(x)) 
output <- lapply(split(x, groups), function(x) c(count=length(x), sd=sd(x))) 
output <- do.call(rbind, output) 
head(output) 
#   count  sd 
# Friday.0  60 1.0301030 
# Monday.0  59 0.9204670 
# Saturday.0 60 0.9842125 
# Sunday.0  60 0.9500347 
# Thursday.0 60 0.9506620 
# Tuesday.0  59 0.8972697