来自分配箱的百分位数

时间:2011-08-31 18:13:38

标签: r

我需要找到“90%样本的最高分档”。

我有一张这样的表:

my_table <- data.frame(matrix(c(122,68,2,0,30,0,0,0,5,79,23,9000), byrow=TRUE, ncol=4))
names(my_table) <- c("0-10","11-20","21-30","31-5000")

bin-headers表示分钟(时间)。

对于第一行,90%的样本间隔小于或等于“11-20”。即90%的样本时间短于21分钟。

对于第二行,它低于或等于间隔“0-10”。

对于第三行,它低于或等于间隔“31-5000”。

我想添加一个“90p-interval”列,其中自动找到上述间隔,从而产生如下表格:

my_table$Perc90 <-  c("11-20","0-10","31-5000")

我真正的桌子是成千上万行。

如果有人可以提供帮助,我将非常感激,也感谢所有为这个梦幻网站做出贡献的人!

/克里斯

2 个答案:

答案 0 :(得分:0)

目前尚不清楚如何根据你的答案确定他的90%截止时间是不确切的,所以我提供的答案会给你一些与你的例子相符的答案。这可确保所选截止值至少为90%。

my_table$Perc90 <- apply(my_table, 1, function(x) {
    pct <- cumsum(x)/sum(x)
    return(names(x[pct >= 0.9][1]))
    }  )

答案 1 :(得分:0)

apply(my_table, 1, function(x) names(x)[
               max( which( c(0,cumsum(x)) < 0.9*sum(x)))
                                      ])
# [1] "11-20"   "0-10"    "31-5000"