#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