我有一组数据引用不同人的速度......所以我的数据看起来像这样 所以它基本上只是一个速度列表
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的新手,非常想用它来分析我的一些数据。
答案 0 :(得分:3)
您可以使用cut
和table
的组合轻松完成此操作。首先让我们在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