r - 以相反顺序枚举分位数

标签 r quantile

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

这是我到目前为止所拥有的:

> x<-c(10, 12, 75, 89, 25, 100, 67, 89, 4, 67, 120.2, 140.5, 170.5, 78.1)
> x <- data.frame(x)
> within(x, Q <- as.integer(cut(x, quantile(x, probs=0:5/5, na.rm=TRUE), 
  include.lowest=TRUE)))

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

我想要得到的是:

       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

最佳答案

实现此目的的一种方法是在 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)

关于r - 以相反顺序枚举分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407222/

相关文章:

python - Pandas/Python 过滤 DF 的列值

r - 如何在不更改值的情况下将 R 中的因子格式转换为数字格式?

r - 生成/绘制对数正态生存函数

statistics - 在 Julia 与 Python 中使用分位数时出现意外结果

R:如何找到分位数

R : know table(s), 如何计算四分位数)

r - 基于不同 R 包中的 GPD 计算返回水平

r - 在 r 数据表中前向填充行

r - R 和 CI 中的单向方差分析图

R:如何合并两个数据框以获得面板数据?