gpt4 book ai didi

r - 如何按 R 数据帧中每个 id 的百分位排序数据 [r]

转载 作者:行者123 更新时间:2023-12-03 00:16:44 25 4
gpt4 key购买 nike

我有一个数据框,其中包含 228 个人的 70-80 行有序响应时间 (rt) 数据,每个人都有一个唯一的 id#(每个人的行数并不相同)。我想将每个人的 RT 分为 5 个箱子。我希望第一个 bin 是他们最快的 20% RT,第二个 bin 是他们下一个最快的 20% RT,等等。每个 bin 中应该有相同数量的试验(除非试验总数是奇数) )。

我当前的数据框如下所示:

id     RT
7000 225
7000 250
7000 253
7001 189
7001 201
7001 225

我希望我的新数据框看起来像这样:

id   RT    Bin
7000 225 1
7000 250 1

让我的数据看起来像这样,我将按 id 和 bin 聚合

我能想到的唯一方法是将数据拆分为一个列表(使用 split 命令),循环每个人,使用分位数命令获取不同 bin 的断点,分配 bin 值(1-5) 每个响应时间。这感觉非常复杂(对我来说很难)。我有点麻烦,非常感谢任何有关如何简化此过程的帮助。谢谢。

最佳答案

@Chase 给出的答案将范围分为 5 组长度相等的组(端点不同)。你似乎想要的是五分位数(5组,每组数量相等)。为此,您需要 Hmisc

中的 cut2 函数
library("plyr")
library("Hmisc")

dat <- data.frame(id = rep(1:10, each = 10), value = rnorm(100))

tmp <- ddply(dat, "id", transform, hists = as.numeric(cut2(value, g = 5)))

tmp 现在有你想要的

> tmp
id value hists
1 1 0.19016791 3
2 1 0.27795226 4
3 1 0.74350982 5
4 1 0.43459571 4
5 1 -2.72263322 1
....
95 10 -0.10111905 3
96 10 -0.28251991 2
97 10 -0.19308950 2
98 10 0.32827137 4
99 10 -0.01993215 4
100 10 -1.04100991 1

每个id的每个hists中都有相同的数字

> table(tmp$id, tmp$hists)

1 2 3 4 5
1 2 2 2 2 2
2 2 2 2 2 2
3 2 2 2 2 2
4 2 2 2 2 2
5 2 2 2 2 2
6 2 2 2 2 2
7 2 2 2 2 2
8 2 2 2 2 2
9 2 2 2 2 2
10 2 2 2 2 2

关于r - 如何按 R 数据帧中每个 id 的百分位排序数据 [r],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7669767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com