gpt4 book ai didi

每组内排名

转载 作者:行者123 更新时间:2023-12-04 11:51:00 25 4
gpt4 key购买 nike

考虑数据:

set.seed(123)

x <- rbinom(12, 1, .5)
y <- (x==0) * rexp(12, 1/100)
z <- (x==1) * rexp(12, 1/220)
group <- sample( rep(1:2, each=6) )

d <- data.frame(x, y, z, group)

首先按 y 对数据进行排序,然后通过 z
d <- d[order(d$y,d$z),]

现在在每个组中,我想给出 rank 。以下代码正常工作:
ds <- split(d, d$group)

ds1 <- ds[[1]]
ds1$rank <- 1:nrow(ds1)

ds2 <- ds[[2]]
ds2$rank <- 1:nrow(ds2)

但是不拆分数据框,我想在每个组中进行排名。我怎样才能做到这一点?

最佳答案

dplyr道路:

library(dplyr)
d %>%
arrange(group, y, z) %>%
group_by(group) %>%
mutate(rank = 1:n()) %>%
ungroup()

我们首先按 group 对 data.frame 进行排序然后 y然后 z ,然后按 group 分组然后为每个观察值分配等级。

结果:
# A tibble: 12 × 5
x y z group rank
<int> <dbl> <dbl> <int> <int>
1 1 0.00000 6.988904 1 1
2 1 0.00000 329.283431 1 2
3 1 0.00000 353.287515 1 3
4 0 35.51413 0.000000 1 4
5 0 47.87604 0.000000 1 5
6 0 272.62365 0.000000 1 6
7 1 0.00000 212.491666 2 1
8 1 0.00000 257.076377 2 2
9 1 0.00000 326.760675 2 3
10 1 0.00000 889.022577 2 4
11 0 48.02147 0.000000 2 5
12 0 84.97861 0.000000 2 6

关于每组内排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800368/

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