2010-11-30 32 views
10

有這樣的數據:如何統計有多少元素以慣用的方式滿足條件?

> data 
[1] 1290603356 1290603360 1290603350 1290603344 1290603340 1290603373 
[7] 1290603354 1290603359 1290603345 1290603363 1290603357 1290603354 
[13] 1290603364 1290603349 1290603352 1290603365 1290603349 1290603343 
[19] 1290603339 1290603343 
> offsets <- c(0, 0.5,1,2,4,8,24,4*24,7*24) * 3600) 
[1] 1800 3600 7200 14400 28800 86400 345600 604800 
> myoffsets <- min(data)+offsets 

之中,UNIX時代的列表和偏移量的列表(0.5小時,1H,2H,4H ...) 我希望能夠繪製有多少的歷元是< =比分鐘(數據)+偏移量

在這個例子中這將是

1 20 20 20 20 20 20 20 

我已經發現如何與一個for循環做到這一點:

for(i in c(1:length(myoffsets))) myres$x[i] <- length(data[data <= myoffsets[i]]) 

但是我敢肯定,如果做到這一點並不複雜,那麼還有更習慣的方式嗎?

回答

5

建議1:稍微更慣用的方法是將取代

長度(數據[數據< = myoffsets [I]])

總和(數據< = myoffsets [i])

這樣,您不會最終爲myoffsets中的每個值取data的子集,只計算其長度並丟棄。

建議2:for中的c()是多餘的。使用較少的按鍵時,以下操作完全相同:for(i in 1:length(myoffsets))

最後,如果你願意擺脫明確的循環,這樣的事情可能是你的味道:

邁爾斯$ X < - sapply(myoffsets,函數(O)和(數據< = o))

+0

這看起來不錯。現在看起來好多了。感謝您幫助初學者! (數據)+ c(0,0.5,1,2,4,8,24,4 * 24,7),其中, * 24)* 3600)) df $ cnt < - sapply(df $ offset,function(o)sum(data <= o)) – user525602 2010-11-30 20:34:14

0
plot(subset(data, data <= min(data+offset))) 
相關問題