我有一个数据集,使用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
的专业知识答案 0 :(得分:1)
使用ave
和seq_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")