以相反的顺序枚举分位数

时间:2015-05-22 23:20:30

标签: r quantile

我试图获取数据帧中列的分位数,但顺序相反。我希望最高的数字在分位数1中。

这是我到目前为止所做的:

       x Q
1   10.0 5
2   12.0 5
3   75.0 3
4   89.0 2
5   25.0 4
6  100.0 2
7   67.0 4
8   89.0 2
9    4.0 5
10  67.0 4
11 120.2 1
12 140.5 1
13 170.5 1
14  78.1 3

我想得到的是:

{{1}}

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是在cut()函数中指定反转标签。如果您希望Q为整数,则需要先将因子标签强制转换为字符,然后再转换为整数。

result <- within(x, Q <- as.integer(as.character((cut(x, 
                              quantile(x, probs = 0:5/5, na.rm = TRUE), 
                              labels = c(5, 4, 3, 2, 1),
                              include.lowest = TRUE)))))
head(result)
    x Q
1  10 5
2  12 5
3  75 3
4  89 2
5  25 4
6 100 2

您的数据:

x <- c(10, 12, 75, 89, 25, 100, 67, 89, 4, 67, 120.2, 140.5, 170.5, 78.1)
x <- data.frame(x)