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

为多个数据子集创建R中的分位数表,r,indexing,R,Indexing,我试图为多个数据子集在R中创建一个分位数表 现在,我在表DATA中有一个ID向量(p_id),它们不是连续的。对于p_id中的每个值,我希望列出分位数 到目前为止,我已经尝试了以下几种: i <- 1 n <- 1 for (i in p_ids) { while(n <= nrow(data)) { quantiles[n] <- quantile(subset(alldata$variableA, alldata$variableB == i

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

现在,我在表
DATA
中有一个ID向量(
p_id
),它们不是连续的。对于
p_id
中的每个值,我希望列出分位数

到目前为止,我已经尝试了以下几种:

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
    }
}

i您应该考虑使用聚合为您计算分位数

设置FUN=quantiles和by=p_id应该满足您的需要

除非我误解了你的问题

看看
cut()
。例如:

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

q谢谢你的帮助。我认为聚合函数将节省我很多时间。我做了进一步的研究,但似乎不断得到一个错误,“by”必须是一个列表。我尝试使用值和数据帧。我的代码是:aggregate(x=mydata$q1,by=p_-id,fun=median)现在,为了生成p_-id的“列表”,我使用了唯一的函数——p_-id还意识到,如果我使用list(),我会处理这个问题,但最后会出现错误消息,即参数必须具有相同的长度。。(代码是:聚合(x=mydata$q1,by=list(p_id),fun=median)。最后算出了。如果你也是R新手:聚合(x=mydata,by=list(mydata$v1),fun=median)。在这种情况下,mydata必须是一个所有因子都是数字的数据框(因此可以计算中值)然后mydata$v1是您希望对项目进行分组的向量——对我来说,这就是字段p_id!