2012-07-06 102 views
0

我試圖爲多個數據子集創建一個R中的分位數表。在R中爲多個數據子集創建一個分位數表

現在,我有一個向量表DATA中的ID(p_ids),它們不是連續的。對於p_ids中的每個值,我期待列出分位數。

到目前爲止,我已經試過的變化:

i <- 1 
n <- 1 

for (i in p_ids) { 
    while(n <= nrow(data)) { 
     quantiles[n] <- quantile(subset(alldata$variableA, alldata$variableB == i), 
           probs = c(0,1,2,3)/3) 
     n <- n + 1 
    } 
} 

我知道自己的問題出在什麼地方指標,但我似乎無法得到其中索引應該去。建議?

回答

0

你應該考慮使用聚合做你的位數爲你 http://stat.ethz.ch/R-manual/R-devel/library/stats/html/aggregate.html

設置FUN =位數和= p_ids應該做你想要什麼。

這是除非我誤解了你的問題。

+0

感謝您的幫助。我認爲聚合函數會爲我節省很多時間。我已經做了進一步的研究,但似乎不斷得到一個錯誤,'由'必須是一個列表。我試圖使用值和數據框。我的代碼是:aggregate(x = mydata $ q1,by = p_ids,fun = median)現在,爲了生成p_ids的「列表」,我使用了唯一函數 - p_ids < - unique(mydata $ p_id)。 – user1489719 2012-07-17 22:27:30

+0

也意識到,如果我使用list(),我照顧這個問題,但最後與參數必須具有相同長度的錯誤消息..(代碼是:聚合(x = mydata $ q1,by = list (p_ids),fun = median) – user1489719 2012-07-17 22:36:32

+0

如果你也是R newbie:aggregate(x = mydata,by = list(mydata $ v1),fun = median),那麼mydata必須是一個數據框,其中所有的因素都是數字的(因此可以計算一箇中位數),然後mydata $ v1就是你想要的項目分組的矢量 - 對於我來說這就是字段p_id。 – user1489719 2012-07-17 23:11:43

0

看看cut()。例如: -

q <- cut(p_ids, 2) 
data.frame(P_id = p_ids, Bin = q) 

cut()第二個參數是你要多少箱。

相關問題