2012-01-19 37 views
0

我是R新手。我有一個數據索引的onject,需要過濾以便我可以獲取每個第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(墊)'請嗎? - 只是有助於弄清楚發生了什麼。乾杯! – 2012-01-19 01:58:27

+0

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」)=列表2 .. $:NULL .. $:chr [1:12]「PX_OPEN..CINC1」「PX_HIGH..CINC1」「PX_LOW..CINC1」「PX_LAST ..CINC1「... 指數:日期[1:49],格式:」2011-11-11「」2011-11-14「」2011-11-15「」2011-11-16「」「2011- 11-17「」2011-11-18「... – 2012-01-19 02:36:44

回答

0

如果您告訴我們您的物體是什麼,這將有所幫助。矢量?一個列表?

如果它是一個名爲myvector載體,你希望每個x個數據點從第一你可以用seq(...)生成序列1, 1+x, 1+2*x, 1+3*x, ...索引到你的對象開始。請參閱?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 – 2012-01-19 01:22:18

+0

在我可以幫助你之前,你必須再次告訴我你的對象是什麼。請編輯你的問題,說明你如何創建你的對象或它來自哪個包。另外,如果是「矩陣」,那麼「每個X數據點」是什麼意思? 「每第X行」? 「每第X列」? – 2012-01-19 01:24:20

+0

編輯了代碼。如果相關的話,該對象的類是動物園。再次,道歉,因爲我是新的,必須編輯別人的代碼。 – 2012-01-19 01:42:09