gpt4 book ai didi

r - 根据另一列的排名向 R 中的数据框添加一列

转载 作者:行者123 更新时间:2023-12-04 11:35:53 24 4
gpt4 key购买 nike

这是我的数据的可重现示例。对于以下数据框:

df <- data.frame(Subject = c('John', 'John', 'John', 'John','Mary', 'Mary', 'Mary', 'Mary'),
SNR = c(-4,-4,0,4,0,4,4,8))

我想添加一个列“排名”,它按主题提供 SNR 排名,因此它看起来像这样:
Subject   SNR   Rank
John -4 1
John -4 1
John 0 2
John 4 3
Mary 0 1
Mary 4 2
Mary 4 2
Mary 8 3

我试过使用:
dfNew <- transform(df, Rank = ave(SNR, Subject, FUN = function(x) rank(x, ties.method = "first")))

但我得到以下信息:
Subject   SNR   Rank
John -4 1
John -4 2
John 0 3
John 4 4
Mary 0 1
Mary 4 2
Mary 4 3
Mary 8 4

我也尝试过使用不同的 ties.method 选项,但没有一个给我我正在寻找的东西(即,仅排名 1-3)。

任何帮助将非常感激!

最佳答案

使用 aggregatefactor在基础 R 中:

ag <- aggregate(SNR~Subject, df, function(x) as.numeric(factor(x)))
df$rank <- c(t(ag[,-1]))

Subject SNR rank
1 John -4 1
2 John -4 1
3 John 0 2
4 John 4 3
5 Mary 0 1
6 Mary 4 2
7 Mary 4 2
8 Mary 8 3

关于r - 根据另一列的排名向 R 中的数据框添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007174/

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