R:选择不同的原始数据并分离到新的排名集

标签 r rank

我有一个数据集,如下所示:

Interest    Age     Gender  Scored.Probabilities
AL008       18-24   male    0.211
AL024       25-34   male    0.022
AL008       35-44   female  0.102
AL008       25-34   female  0.002
AL024       13-17   male    0.102
AL035       35-44   female  0.027
AL024       35-44   female  0.051
AL024       55-64   male    0.025
AL024       35-44   male    0.016
AL034       45-54   male    0.021
AL036       35-44   male    0.082

我想选择“兴趣”列的相同名称,并创建根据“评分.概率”排名的新数据集:

Set         Interest    Age     Gender  Scored.Probabilities    rank
1           AL008       18-24   male    0.211                    1
1           AL008       35-44   female  0.102                    2
1           AL008       25-34   female  0.002                    3
2           AL024       13-17   male    0.102                    1
2           AL024       35-44   female  0.051                    2
2           AL024       55-64   male    0.025                    3
2           AL024       25-34   male    0.022                    4
2           AL024       35-44   male    0.016                    5
3           AL034       45-54   male    0.021                    1
4           AL035       35-44   female  0.027                    1
5           AL036       35-44   male    0.082                    1

最佳答案

你可以试试

 library(data.table)
 setDT(df1)[order(-Scored.Probabilities), rank:= 1:.N, Interest][
           order(Interest), Set := .GRP, Interest][order(Interest, rank)]
 #     Interest   Age Gender Scored.Probabilities rank Set
 #1:    AL008 18-24   male                0.211    1   1
 #2:    AL008 35-44 female                0.102    2   1
 #3:    AL008 25-34 female                0.002    3   1
 #4:    AL024 13-17   male                0.102    1   2
 #5:    AL024 35-44 female                0.051    2   2
 #6:    AL024 55-64   male                0.025    3   2
 #7:    AL024 25-34   male                0.022    4   2
 #8:    AL024 35-44   male                0.016    5   2
 #9:    AL034 45-54   male                0.021    1   3
#10:    AL035 35-44 female                0.027    1   4
#11:    AL036 35-44   male                0.082    1   5

关于R:选择不同的原始数据并分离到新的排名集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251169/

相关文章:

r - 在 R 中选择没有缺失值的行

r - pair() 函数中的外边距

r - 在 R 中按排名和条件提取行

PHP/MySQL - 内连接排名

sql - 获取每个类别的前 10 名产品

mysql - 使用 MYSQL 反向排名

r - 如何按条件在r中其他列中对行进行排序?

r - 如何让 RInno 只安装 32 位版本的 R?

java - Spark SQL 中的 rank() 函数用法

r - 如何创建稀疏对角矩阵?