2012-01-19 2 views
0

저는 R에 익숙하지 않습니다. 모든 X 번째 데이터 포인트를 얻을 수 있도록 필터링해야하는 데이터 인덱스가 있습니다. 어떻게해야합니까? 데이터를 생성하는 데 사용 코드이었다 데이터 인덱스 개체의 행을 R으로 필터링하십시오.

temp <- blpGetData(conn, securities[1], fields=values,start=startdate,end=enddate, barsize=interval, barfields=tick,retval=datatype) 
assign(paste(gsub(" +","",repl[1])),temp) 
name <- paste("merge(",paste(gsub(" +","",repl[1]))) 
suf <- paste(", suffixes=c('.",paste(gsub(" +","",repl[1])),"'",sep="") 

for(i in 2:length(securities)){ 
    temp <- blpGetData(conn, securities[i], 
         fields=values, 
         start=startdate, 
         end=enddate, 
         barsize=interval, 
         barfields=tick, 
         retval=datatype) 
    assign(paste(gsub(" +","",repl[i])),temp) 
    name <- paste(name,",",paste(gsub(" +","",repl[i]))) 
    suf <- paste(suf,",'.",paste(gsub(" +","",repl[i])),"'",sep="") 
} 
name <- paste(name,suf,"))") 
mat <- eval(parse(text=name)) 

내가 모든 X 번째 행을 원한다. mat이 개체입니다.

> cat(name) 
PX_OPEN..CINC1 PX_HIGH..CINC1 PX_LOW..CINC1 PX_LAST..CINC1 PX_OPEN..CINC5 PX_HIGH..CINC5 PX_LOW..CINC5 PX_LAST..CINC5 PX_OPEN..UST10Y PX_HIGH..UST10Y PX_LOW..UST10Y PX_LAST..UST10Y 

> str(mat) ‘zoo’ series from 2011-11-11 to 2012-01-18 
Data: num [1:49, 1:12] 206 205 205 212 219 ... 
- attr(*, "dimnames")=List of 2 
..$ : NULL 
..$ : chr [1:12] "PX_OPEN..CINC1" "PX_HIGH..CINC1" "PX_LOW..CINC1" "PX_LAST..CINC1" 
... Index: Date[1:49], format: "2011-11-11" "2011-11-14" "2011-11-15" "2011-11-16" "2011-11-17" "2011-11-18" ... 
+0

당신이'고양이 (이름)'와'str을 할 수 있습니다 (매트)'제발? - 무슨 일이 벌어지는 지 알아내는 데 도움이됩니다. 건배! –

+0

고양이 (이름) PX_OPEN..CINC1 PX_HIGH..CINC1 PX_LOW..CINC1 PX_LAST..CINC1 PX_OPEN..CINC5 PX_HIGH..CINC5 PX_LOW..CINC5 PX_LAST..CINC5 PX_OPEN..UST10Y PX_HIGH..UST10Y PX_LOW..UST10Y PX_LAST..UST10Y> > str (매트) '동물원'시리즈 2011-11-11부터 2012-01-18까지 데이터 : num [1:49, 1:12] 206 205 205 212 219 ... - $ 2 :$ : NULL .. $ : chr [1:12] "PX_OPEN..CINC1" "PX_HIGH..CINC1" "PX_LOW..CINC1" "PX_LAST의 attr (*,"dimnames " ..CINC1 "... 색인 : 날짜 [1:49], 형식 :"2011-11-11 ""2011-11-14 ""2011-11-15 ""2011-11-16 ""2011-11-16 " 11-17 ""2011-11-18 "... –

답변

0

귀하의 개체가 무엇인지 알려 주시면 도움이됩니다. 벡터? 목록?

myvector라는 벡터가 그리고 당신은 모든 x 번째의 데이터가 먼저 개체에 인덱스 순서 1, 1+x, 1+2*x, 1+3*x, ...를 생성하는 seq(...)를 사용할 수있는 시작 지점합니다. ?seq을 참조하십시오.

예 :

myvector <- runif(100) # generate vector of 100 random values 
idx  <- seq(1,length(myvector),by=10) # get every 10th value starting from 
              # & including 1, 
myvector[idx] # every 10th value: elements 1, 11, 21, ... 

UPDATE

개체는 두 개의 차원이기 때문에는 시도 :

n <- 5 # get every 5th object 
idx <- seq(1,nrow(mat),by=n) 
mat[idx,] 
+0

'[.zoo' (data, idx)]의 오류 : 범위 밖의 첨자 이것은 날짜별로 색인화되며 더 많은 행렬입니다. > dim (data)주는 [1] 49 12 –

+0

또 내가 당신을 도울 수 있기 전에 당신의 목표가 무엇인지 말해줘야합니다. 오브젝트를 작성하는 방법이나 그 패키지의 출처를 나타내는 질문을 편집하십시오. 또한 행렬 인 경우 "모든 X 번째 데이터 요소"는 무엇을 의미합니까? "모든 X 번째 행"? "모든 X 번째 열"? –

+0

은 (는) 코드를 편집했습니다. 개체 클래스는 관련성이있는 경우 동물원입니다. 다시 한 번 사과하며, 내가 새로운 사람이고 다른 사람의 코드를 수정해야합니다. –

관련 문제