根据总R创建百分位数

根据总R创建百分位数,r,percentile,R,Percentile,我试图把我的数据分成百分位数。首先,这里是一些示例数据: df <- data.frame( employee.first.name = c ('Jim', 'John', 'James', 'Jack', 'Jill', 'Kathy', 'Kim', 'Kelly', 'Karl', 'Larry', 'Lemon', 'Lime', 'Man', 'Mark', 'Mary

我试图把我的数据分成百分位数。首先,这里是一些示例数据:

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
  )
)
我想按工资总额的百分比分成四分之一。例如,在上面的数据中,总工资的25%是1235。做一些计算,我可以发现,如果我们看一周工资总额在1-255范围内,我们大约回到25%的数额

我想知道每个四分位数的工资范围。如何在R中快速完成此任务

对不起,我的标题不好——似乎无法恰当地表达我想要什么。假期后的星期一早上,周末不太好:)


谢谢

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

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
将根据这些四分位数更改初始数据向量


注意分位数/四分位数的计算方法的
类型
参数。

我相信您试图实现的是

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
将根据这些四分位数更改初始数据向量


注意分位数/四分位数的计算方法的
类型
参数。

我想你问的是累积工资的四分位数。正如你所注意到的,我们需要把工资总额除以四,得到四分位数。这样我们就可以得到工资的四分位数:

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 

sorted.pay我想你问的是累计工资的四分位数。正如你所注意到的,我们需要把工资总额除以四,得到四分位数。这样我们就可以得到工资的四分位数:

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 
sorted.pay