2011-04-07 134 views
1

我正在將數據分類到分箱並求平均值,請參閱this solutionR:繪製分箱數據

我使用與上述鏈接完全相同的解決方案,但將我的數據修改爲散點圖。這是造成我困難的代碼是:

myData.class <- cut(df$xaxis, seq(0,30,length=60), include.lowest=TRUE) 
mean.yaxis <- tapply(df$yaxis, myData.class, mean) 
lines(mean.yaxis ~ seq(0, 30, length=60)) 

到線上的呼叫產生一個錯誤:

Error in model.frame.default(formula = mean.yaxis ~ seq(0, 30, length = 60), : 
    variable lengths differ (found for 'seq(0, 30, length = 60)') 

甲呼叫到STR(mean.yaxis)產生:

num [1:59(1d)] 0 0 0 0.349 4.652 ... 
- attr(*, "dimnames")=List of 1 
    ..$ : chr [1:59] "[0,0.508]" "(0.508,1.02]" "(1.02,1.53]" "(1.53,2.03]" ... 

我如何在函數行(...)的調用中訪問正確的數據?

+0

這是一個有點難以讓我們沒有你的數據工作或最好,一個小的,可重複的例子。 – 2011-04-07 12:31:12

+0

@Roman我發佈的鏈接使用預先安裝的地震數據集。 – klonq 2011-04-07 12:36:24

+2

分箱連續數據通常被認爲是不良格式。關於這一點,我順從弗蘭克哈雷爾。 http://biostat.mc.vanderbilt.edu/wiki/Main/CatContinuous – 2011-04-07 15:17:22

回答

0

可能:

lines(mean.yaxis ~ seq(0, 30, length=length(mean.yaxis))) 

HTH

+0

@Iselzer:將手段映射到一側的間隔的左側邊界,並將另一側的間隔映射到右側邊界。所以基本上只有中間點是正確定位的,其餘​​的都伸向左邊或右邊。 – 2011-04-07 17:38:36

2

最好的解決辦法是從你的鏈接接受的答案給出。這將繪製x軸上的間隔。

cut會返回一個比您的序列小1級的因子(如您所見)。如果你想在間隔中頻,你可以做(​​取前者的例子):

data(quakes) 

Seq <- c(40, 120, 200, 300, 400, 500, 600, 680) 
depth.class <- cut(quakes$depth, Seq, include.lowest = TRUE) 
mean.mag <- tapply(quakes$mag, depth.class, mean) 

class.mids <- Seq[-1] - diff(Seq)/2 

plot(mean.mag~class.mids,xlim=range(Seq)) 
lines(mean.mag~class.mids) 

enter image description here