2014-01-14 38 views
2

考慮類似於XTS矩陣:子集的 「XTS」(基體),其中元件超過給定閾值

> x=xts(matrix(1:12, ncol=3), Sys.Date()+1:4 ) 
> x[1,]=NA 
> x 
      [,1] [,2] [,3] 
2014-01-15 NA NA NA 
2014-01-16 2 6 10 
2014-01-17 3 7 11 
2014-01-18 4 8 12 

要獲得元素超過,也就是說,4:

> coredata(x)[x>4] 
[1] NA NA 6 7 8 NA 10 11 12 

和沒有的NA :

> coredata(x)[!is.na(x) & x >4] 
[1] 6 7 8 10 11 12 

港定居不要選擇x元素,因此下面的作品,而不廢了第一行過:

> coredata(x)[x>4]=0 
> x 
      [,1] [,2] [,3] 
2014-01-15 NA NA NA 
2014-01-16 2 0 0 
2014-01-17 3 0 0 
2014-01-18 4 0 0 

的問題是:是這樣子集方法有效時x較大或有任何更多的XTS具體做法?

+0

如果你不關心XTS對象的指數,這種方法應該是有效的,你是直接與矩陣的數據處理。 –

+0

@ChinmayPatil:實際上,只要做'x [x> 4]''會很好。由於xts類聲稱是矩陣類似的,我認爲有更好的替代方案通過'coredata'轉換/提取矩陣。 – antonio

+0

你不需要'coredata'來完成那個任務。你可以做'x [x> 4] < - 0' – GSee

回答

0

您可以嘗試which=TRUE說法,而子集化

x = xts(matrix(1:12, ncol = 3), Sys.Date() + 1:4) 
x[1, ] = NA 
x[x > 4, which = T] 
## [1] 6 7 8 10 11 12