2011-08-23 57 views
7

我有一個變量(Var),它存儲10000個值並且是整數類型的。計數出現值的次數

我想統計1000次或1000次以上的數值出現在這個列表中的次數。

R中的任何一個內襯?

預先感謝您。

+2

你試過了什麼? – Iterator

回答

11

sum(Var >= 1000)會做到這一點,只要Var是一個向量。如果沒有,你需要告訴R在任何包含它的對象內部找到Var。這裏有一個例子:

> set.seed(2) 
> Var <- sample(900:1100, 10) 
> Var 
[1] 937 1040 1014 933 1085 1084 925 1061 990 1005 
> Var >= 1000 
[1] FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE 
> sum(Var >= 1000) 
[1] 6 

它使用的事實,TRUE = 1和FALSE = 0

+1

作爲一個方面說明,如果您想對「Var == 1000」務必閱讀「==」和「all.equal」之間的區別 –

10
sum(Var>=1000) 

建議您閱讀一些介紹R文檔,這種東西總是出現。此外,你有什麼是希望不是'名單',而是'矢量'。如果它是'列表',那麼... ummm,首先取消列表()。

+0

我想你的意思是''=''不只是'>' –

+0

排序。我的錯誤... – Spacedman

+0

@Spacedman:謝謝你的建議,我正在玩你的MC模擬劇本。我想要的是統計觀察到的重疊在您的變量sim中出現的次數,然後將其除以循環次數。這將給我認爲可以用作經驗p值的一些分數。有什麼建議麼 ????? – Angelo

4

嘗試這種情況:

sum(r >= 1000) 

其中r是一個矢量。這是有效的,因爲當你試圖求和一個布爾向量時,R自動將布爾值TRUE/FALSE轉換爲值1和0。

3

可能效率不高,但我喜歡

> length(which(Var>=1000)) 
0

它也可以使用:

vec <- sample(1:10, 15, replace = TRUE) 
table(vec > 2) 

length(vec[vec>2])