在R中为多个数据子集创建一个分位数表

问题描述:

我试图为多个数据子集创建一个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 
    } 
} 

我知道自己的问题出在什么地方指标,但我似乎无法得到其中索引应该去。建议?

你应该考虑使用聚合做你的位数为你 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 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

看看cut()。例如: -

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

cut()第二个参数是你要多少箱。