我有这样的df:
Class_A Class_B
78 50
40 60
30 70
我想要的结果是
Class_A Class_B RankClass_A RankClass_B
78 50 1 3
40 60 2 2
30 70 3 1
基本上,我可以使用mutate函数创建两个或多个cols。但是,当我将其放入一个循环中以创建更多cols时,该代码将无法正常工作。
这是我的代码
label<-c('RankClass_A',"RankClass_B")
for (i in 1:2){
for (k in 1:2){
mutate(df,label[i]=dense_rank(desc(df[k])
}
}
答案 0 :(得分:4)
我们可以使用mutate_all
创建“排名”列
df %>%
mutate_all(funs(Rank = rank(-.)))
# Class_A Class_B Class_A_Rank Class_B_Rank
#1 78 50 1 3
#2 40 60 2 2
#3 30 70 3 1