【问题标题】:Creating percentiles against total R根据总 R 创建百分位数
【发布时间】:2020-12-01 12:11:19
【问题描述】:

我正在尝试将我的数据分解为百分位数。首先,这里有一些示例数据:

df <- data.frame(
  employee.first.name = c ('Jim', 'John', 'James', 'Jack', 'Jill', 'Kathy',
                           'Kim', 'Kelly', 'Karl', 'Larry', 'Lemon', 'Lime',
                           'Man', 'Mark', 'Mary', 'Miss', 'Molly',
                           'Matthew', 'Nancy', 'Nelly'),
  week.pay = c(401, 70, 58, 130, 483, 464, 84, 327, 208,
               254, 306, 393, 270, 54, 279, 390, 144,
               97, 125, 403
  )
)

我可以使用cut2 函数将week.pay 分解为百分位数:

library(Hmisc)
cut2(df$week.pay, g = 4, levels.mean = FALSE)

我想将总工资的百分比分成四分位数。例如,在上面的数据中,总工资的 25% 是 1235。做一些数学运算,我可以发现,如果我们查看 1 - 255 范围内的周工资总和,我们大约会回到 25% 的金额.

我想知道相当于每个四分位数的薪酬范围。如何在 R 中快速完成此任务?

对不起,我的标题很差 - 似乎无法正确表达我想要的内容。假期周末后的星期一早上不太好:)。

谢谢!

【问题讨论】:

    标签: r percentile


    【解决方案1】:

    我认为您是在询问累积工资的四分位数。正如您所注意到的,我们需要将总工资除以四才能得到四分位数。这样我们就可以得到四分位数的薪酬:

    sorted.pay <- sort(df$week.pay)
    cum.pay <- cumsum(sorted.pay)
    brk <- floor(cum.pay/(sum(sorted.pay/4)))
    brk <- ifelse(brk > 3, 3, brk)   # Include highest pay in 4th group
    sapply(split(sorted.pay, brk), range)
    #        0   1   2   3
    # [1,]  54 270 390 403    # Min
    # [2,] 254 327 401 483    # Max
    table(brk)
    # brk
    #  0  1  2  3 
    # 10  4  3  3 
    

    因此,处于最低四分位数的 10 人的工资在 54 到 254 之间,而排名靠前的 3 人的工资在 403 到 483 之间。最低的 10 人获得总工资的 1/4,前 3 人获得 1/工资总额中的 4 个。

    【讨论】:

      【解决方案2】:

      我相信你想要达到的目标是

      cut(
          x = df$week.pay
          , breaks = quantile(
               df$week.pay
               , probs = seq(0, 1, 0.25)
               , names = FALSE
               , type = 7)
          , include.lowest = TRUE
      )
      

      带有probs 参数的quantile 函数将为您计算四分位数。随后cut 将根据这些四分位数更改您的初始数据向量。

      注意type 的参数如何计算分位数/四分位数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 2019-12-24
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多