如何使用R来获取不同范围的频率?

时间:2013-03-06 12:10:04

标签: r range frequency

我有一组数据引用不同人的速度......所以我的数据看起来像这样 所以它基本上只是一个速度列表

Velocity(m/s)
1.2
1.4
2.3
1.6
4.5
3.5
1.7
4.5
3.7

我想用R来获得不同的范围和特定范围的频率...... 例如,我想要一个类似下面的输出

Velocity(m/s)     Frequency
1.0 - 3.0            7
1.5- 2.0             4

...

所以我想获得各种范围的频率列。我是R的新手,非常想用它来分析我的一些数据。

2 个答案:

答案 0 :(得分:3)

您可以使用cuttable的组合轻松完成此操作。首先让我们在0和0之间生成100个随机数。 100:

r = runif(100, 0, 100)

接下来,我们希望中断出现在哪里。在这个例子中,我们想要它们:0,10,...,100:

cut(r, breaks=seq(0, 100, 10))

然后使用table命令计算频率:

table(cut(r, breaks=seq(0, 100, 10)))

你似乎想要重叠中断,所以我会两次使用table命令,即

t1 = table(cut(r, breaks=seq(0, 100, 10)))
t2 = table(cut(r, breaks=seq(0, 100, 5)))

然后结合结果

c(t1, t2)

答案 1 :(得分:1)

我会为每个范围创建一个具有最小和最大速度的data.frame:

my.summary <- data.frame(vel.lo = c(1, 1.5), 
                         vel.hi = c(3, 2))

然后使用plyr的{​​{1}}计算频率:

adply

注意:您也可以使用基础包library(plyr) adply(my.summary, 1, transform, freq = sum(dat$Velocity > vel.lo & dat$Velocity <= vel.hi)) # vel.lo vel.hi freq # 1 1.0 3 5 # 2 1.5 2 2 ,但由于它删除了列名,我发现apply为您提供的读取代码优于:

adply