Как ранжировать данные из нескольких строк и столбцов?

#r #dataframe #rank

#r #фрейм данных #ранжировать

Вопрос:

Пример данных:

 >data.frame("A" = c(20,40,53), "B" = c(40,11,60))
  

Какой самый простой способ в R получить из этого

    A   B
1 20  40
2 40  11
3 53  60
  

к этому?

   A       B
1 2.0   3.5
2 3.5   1.0
3 5.0   6.0
  

Я не смог найти способ заставить rank() или frank() работать с несколькими строками / столбцами, и поиск в Google таких вещей, как «r rank dataframe» «r rank multiple rows», дал только вопросы о том, как ранжировать несколько строк / столбцов по отдельности, что странно, поскольку я подозреваю, что на этот вопрос, должно быть, был дан ответ ранее.

Ответ №1:

Попробуйте rank , как показано ниже

 df[] <- rank(df)
  

или

 df <- list2DF(relist(rank(df),skeleton = unclass(df)))
  

и вы получите

 > df
    A   B
1 2.0 3.5
2 3.5 1.0
3 5.0 6.0
  

Комментарии:

1. Не могли бы вы объяснить, почему df[] <- rank(df) работает, а df <- rank(df) дает нежелательный результат?

2. @Max [] резервирует атрибуты df