gpt4 book ai didi

R-根据组内排名的新变量

转载 作者:行者123 更新时间:2023-12-03 05:51:08 25 4
gpt4 key购买 nike

我有这样一个数据框(df),它只是一个示例:

group value condition   
1 12 1
1 14 1
1 18 1
1 10 0
1 7 1
2 12 1
2 9 0
2 12 1
2 16 1
2 15 0

即;

df<-data.frame(group=c(1,1,1,1,1,2,2,2,2,2), value=c(12,14,18,10,7,12,9,12,16,15), condition=c(1,1,1,0,1,1,0,1,1,0))

我想创建 3 个名为“rank1”、“rank2”和“rank3”的新列,其中

  • rank1 给出“组”中最小的“值”
  • rank2 给出“组”内第二小的“值”
  • rank3 给出“组”中第三小的“值”
  • 在满足条件 = 1 的值内

即,所需的输出是:

group rank1 rank2 ran3
1 7 12 14
2 12 12 16

我怎样才能用 R 做到这一点?我将非常高兴获得任何帮助。非常感谢。

最佳答案

使用data.table:

library(data.table)
setDT(df)[condition == 1,
setNames(as.list(sort(value)[1:3]), paste0("rank", 1:3)),
by = group]
# group rank1 rank2 rank3
# 1: 1 7 12 14
# 2: 2 12 12 16

关于R-根据组内排名的新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386058/

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