根据总 R 创建百分位数
Creating percentiles against total R
我正在尝试将我的数据分解为百分位数。首先,这里有一些示例数据:
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 中快速完成此操作?
抱歉,我的标题不好 - 似乎无法正确表达我想要的内容。假期周末过后的星期一早上不太好:)。
谢谢!
我相信您要实现的目标是
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
参数。
我想你问的是累积工资的四分位数。正如您所注意到的,我们需要将总薪酬除以四才能得到四分位数。这样我们就可以得到工资的四分位数:
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。
我正在尝试将我的数据分解为百分位数。首先,这里有一些示例数据:
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 中快速完成此操作?
抱歉,我的标题不好 - 似乎无法正确表达我想要的内容。假期周末过后的星期一早上不太好:)。
谢谢!
我相信您要实现的目标是
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
参数。
我想你问的是累积工资的四分位数。正如您所注意到的,我们需要将总薪酬除以四才能得到四分位数。这样我们就可以得到工资的四分位数:
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。