2011-08-23 141 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])