在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应该做你想要什么。
这是除非我误解了你的问题。
答
看看cut()
。例如: -
q <- cut(p_ids, 2)
data.frame(P_id = p_ids, Bin = q)
的cut()
第二个参数是你要多少箱。
感谢您的帮助。我认为聚合函数会为我节省很多时间。我已经做了进一步的研究,但似乎不断得到一个错误,'由'必须是一个列表。我试图使用值和数据框。我的代码是:aggregate(x = mydata $ q1,by = p_ids,fun = median)现在,为了生成p_ids的“列表”,我使用了唯一函数 - p_ids user1489719 2012-07-17 22:27:30
也意识到,如果我使用list(),我照顾这个问题,但最后与参数必须具有相同长度的错误消息..(代码是:聚合(x = mydata $ q1,by = list (p_ids),fun = median) – user1489719 2012-07-17 22:36:32
如果你也是R newbie:aggregate(x = mydata,by = list(mydata $ v1),fun = median),那么mydata必须是一个数据框,其中所有的因素都是数字的(因此可以计算一个中位数),然后mydata $ v1就是你想要的项目分组的矢量 - 对于我来说这就是字段p_id。 – user1489719 2012-07-17 23:11:43