2013-03-06 40 views
-1

我有一組數據,它指的是不同的人的...速度對我這樣的數據看起來像這樣 因此,它基本上是一個速度表如何使用R獲取不同範圍的頻率?

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

範圍有點奇怪 – 2013-03-06 12:13:00

+1

你能澄清@ LucianoSelzer的評論嗎? – Arun 2013-03-06 12:30:02

+0

我很樂意在澄清後投票。 – Arun 2013-03-06 12:41:35

回答

3

您可以使用cuttable的組合輕鬆完成此操作。首先讓生成100周隨機數0之間& 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) 
+0

謝謝csgillespie ....但呃我得到這個錯誤在cut.default錯誤(f,breaks = seq(0,4,2)):'x'必須是數字 – 2013-03-06 12:30:29

+0

沒有您的實際數據,很難診斷wha錯誤。我的榜樣是否適合你?在你的情況下,我懷疑'f'裏面有一個字符。 – csgillespie 2013-03-06 12:54:03

1

我想創建與最小和最大速度爲每個範圍內的data.frame:

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

然後使用plyradply用於計數頻率:

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給你的代碼讀取b etter比:

my.summary$freq <- apply(my.summary, 1, function(x)sum(dat$Velocity > x[1] & 
                 dat$Velocity <= x[2]))