统计某个值出现的次数

9

我有一个存储了10000个整数值的变量(Var)。

我想计算这个列表中出现1000或更高数字值的次数。

在R语言中有一行代码可以实现吗?

谢谢您提前。

5个回答

13

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”之间的区别。 - Carl Witthoft

10
sum(Var>=1000)

建议您阅读一些关于R语言的入门文档,这种情况经常出现。另外,希望您拥有的是“向量”而不是“列表”。如果它是一个“列表”,那么...呃,首先将其使用unlist()函数转换成向量。


我认为你的意思是 >= 而不仅仅是 > - Gavin Simpson
@Spacedman:感谢您的建议,我正在使用您的MC模拟脚本进行尝试。我的目标是计算观察到的重叠次数,并将其除以循环次数。这将给出一些分数,我认为可以作为经验P值使用。有什么建议吗? - Angelo
mean(Var>=1000)sum(Var>=1000)/length(Var) 的巧妙简写。 - Ben Bolker

5
也许不是很高效,但我喜欢。
> length(which(Var>=1000))

4

试试这个:

 sum(r >= 1000)

r是一个向量。这样做的原因是当您尝试对一个布尔向量求和时,R会自动将TRUE/FALSE转换为值1和0。


0

也可以使用以下方法:

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

或者

length(vec[vec>2])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接