需要根据R中的3列对数据集进行排名

时间:2016-09-07 13:07:33

标签: r

我有一个数据集,使用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

的专业知识

1 个答案:

答案 0 :(得分: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")