使用循环突变多列

时间:2018-08-13 02:41:08

标签: r loops for-loop

我有这样的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])
  }
}

1 个答案:

答案 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