【问题标题】:Need to rank a dataset based on 3 columns in R [duplicate]需要根据 R 中的 3 列对数据集进行排名 [重复]
【发布时间】:2016-09-07 13:07:32
【问题描述】:

我有一个使用 R 中的函数 order() 排序的数据集,如下所示

A   B   C
1   1   85
1   1   62
1   0   92
2   1   80
2   0   92
2   0   84
3   1   65
3   0   92

我必须根据 A 列打印排名,预期输出如下所示

A   B   C   Rank
1   1   85  1
1   1   62  2
1   0   92  3
2   1   80  1
2   0   92  2
2   0   84  3
3   1   65  1
3   0   92  2

请求 R 方面的专业知识

【问题讨论】:

    标签: r


    【解决方案1】:

    使用aveseq_along 的简单基本R 解决方案是

    df$Rank <- ave(df$B, df$A, FUN=seq_along)
    

    返回

    df
      A B  C Rank
    1 1 1 85    1
    2 1 1 62    2
    3 1 0 92    3
    4 2 1 80    1
    5 2 0 92    2
    6 2 0 84    3
    7 3 1 65    1
    8 3 0 92    2
    

    seq_along 返回一个向量 1, 2, 3, ... 其参数的长度。 ave 允许用户将函数应用于此处由变量 A 确定的组。

    数据

    df <- read.table(header=TRUE, text="A   B   C
    1   1   85
    1   1   62
    1   0   92
    2   1   80
    2   0   92
    2   0   84
    3   1   65
    3   0   92")
    

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 2012-06-19
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多