我有一个包含分数的数据表,并想在分数列中添加基于他们所在的年龄组和年龄的百分比。

Age  Group  Score1 Score2  
22   A      95     85  
23   B      88     76  
25   B      84     56  
22   A      68     65  
25   B      76     85  
23   B      59     75 

因此,例如,22A 23B和25B在百分位数的计算中都是分开的。

#1楼 票数:3 已采纳

您发布的示例中每个组的案例很少,因此我以mtcars为例:

library(dplyr)

# example data
df = mtcars %>% select(am, cyl, disp, wt)

假设am, cyl是您的分组变量,而disp, wt是您的分数:

df %>% 
  group_by(am, cyl) %>%
  mutate_at(vars(disp, wt), funs(prc = cume_dist)) %>%
  ungroup() %>%
  arrange(am, cyl) %>%  # not needed; only for visualisation
  data.frame()          # not needed; only for visualisation

#    am cyl  disp    wt  disp_prc     wt_prc
# 1   0   4 146.7 3.190 1.0000000 1.00000000
# 2   0   4 140.8 3.150 0.6666667 0.66666667
# 3   0   4 120.1 2.465 0.3333333 0.33333333
# 4   0   6 258.0 3.215 1.0000000 0.25000000
# 5   0   6 225.0 3.460 0.7500000 1.00000000
# 6   0   6 167.6 3.440 0.5000000 0.75000000
# 7   0   6 167.6 3.440 0.5000000 0.75000000
# 8   0   8 360.0 3.440 0.6666667 0.16666667
# 9   0   8 360.0 3.570 0.6666667 0.33333333
# 10  0   8 275.8 4.070 0.2500000 0.75000000
# 11  0   8 275.8 3.730 0.2500000 0.41666667
# 12  0   8 275.8 3.780 0.2500000 0.50000000
# 13  0   8 472.0 5.250 1.0000000 0.83333333
# 14  0   8 460.0 5.424 0.9166667 1.00000000
# 15  0   8 440.0 5.345 0.8333333 0.91666667
# 16  0   8 318.0 3.520 0.4166667 0.25000000
# 17  0   8 304.0 3.435 0.3333333 0.08333333
# 18  0   8 350.0 3.840 0.5000000 0.58333333
# 19  0   8 400.0 3.845 0.7500000 0.66666667
# 20  1   4 108.0 2.320 0.7500000 0.87500000
# 21  1   4  78.7 2.200 0.3750000 0.75000000
# 22  1   4  75.7 1.615 0.2500000 0.25000000
# 23  1   4  71.1 1.835 0.1250000 0.37500000
# 24  1   4  79.0 1.935 0.5000000 0.50000000
# 25  1   4 120.3 2.140 0.8750000 0.62500000
# 26  1   4  95.1 1.513 0.6250000 0.12500000
# 27  1   4 121.0 2.780 1.0000000 1.00000000
# 28  1   6 160.0 2.620 1.0000000 0.33333333
# 29  1   6 160.0 2.875 1.0000000 1.00000000
# 30  1   6 145.0 2.770 0.3333333 0.66666667
# 31  1   8 351.0 3.170 1.0000000 0.50000000
# 32  1   8 301.0 3.570 0.5000000 1.00000000

然后,您可以将百分位数四舍五入到小数点后两位,或者创建一个%值,并将它们与您的实际分数合并到一栏中。

  ask by user10256905 translate from so

未解决问题?本站智能推荐:

2回复

如何使用dplyr通过id过滤数据框组中列的前10个百分位数

我有以下数据框: 需要在'total_transfered_amount'列中过滤出超过90%的行,因为每个id分别优先使用dplyr包,例如我需要过滤掉以下行:
2回复

计算R中数据帧中每列的百分位数

我有一个包含3个分类列和40个数值的数据集。 我想计算出40个数字列中每个列的第90个百分位数。 将此数据框作为可重现的示例: 我想做类似的事情: calc_percentile = quantile(df[,3:5], probs = 0.90) 我正在寻找的输出将是: 鉴于
1回复

获取数据框列中最接近的百分位数

我有一个大数据集,我使用 dplyr 的 percent_rank() 函数根据回报日期对我的股票回报进行排名。 我的问题是我想在百分位创建断点并且没有精确的四舍五入百分比。 更具体地说,我正在寻找最接近每 10 个百分位数 (.1) 的数字,这里是我数据集的一些值的提取: 我尝试做一个 for 循
5回复

计算数据集列的百分位数

给你一个快速的,最亲爱的 R 大师: 我正在做一项作业,在这个练习中,我被要求从infert数据集(它是内置的)中获取基本统计数据,特别是其中的一列infert$age 。 对于不熟悉数据集的任何人: 我必须找到列的中值、方差、偏度、标准偏差,这些都可以,直到我被要求找到“percentiles”列
2回复

结合LOESS和Quantreg计算数据的百分位数/分位数

我正在尝试计算相当分散的数据的百分位数或分位数。 使用 Loess 函数可以很好地呈现平均值,但是,我无法从该函数中获得百分位数/分位数。 我尝试将 quantreg 与 loess 结合起来。 该图显示的是线性曲线,而不是黄土平滑曲线。 我想得到类似的结果: 我也尝试了建议的代码,但是,我无法更
1回复

如何找到百分位数然后在R中分组

我有一个像下面的数据框(DF)。 在这里,我有87个区域(1到82,然后有90,93,95,97,99)和每天24小时(0到23)的30天数据,所以该数据大约是穿越时间该地区以及有多少人穿越。 例如: 这使我在0小时的第1天穿越区域1所花费的时间 据此,我想计算出80%的车辆在1
2回复

根据总R创建百分位数

我正在尝试将我的数据分解为百分位数。 首先,这是一些示例数据: 我可以使用cut2函数将week.pay分成百分位数: 我想按总薪酬的百分比分成四分位数。 例如,在上面的数据中,总工资的 25% 是 1235。做一些数学运算,我可以发现,如果我们查看 1 - 255 范围内的周薪总和,我们大约会回到
1回复

ggplotgeom_bar绘制百分位数

假设有以下数据: 我想使用ggplot将其绘制为堆叠列来表示百分位数。 东西链接到这个: 有小费吗? PD。 我知道图中的值不匹配,这只是草稿。