Образец df:
df <- tibble(name = LETTERS[1:10],
x = rnorm(10, mean = 10),
y = rnorm(10, 10),
z = rnorm(10, 10))
Я хотел бы изменить ранжированные столбцы для x
, затем суммы столбцов x
и y
, затем x
и y
иz
, где большие числа ранжируются 1, затем наименьшие цифры 10.
Начиная с x
, я мог бы сделать что-то вроде:
df %<>% mutate(rank_01 = min_rank(-x))
, который вычисляет ранжированный столбецдля x
, но тогда я не уверен, какой лучший процесс будет для вычисления последних столбцов.Я предполагаю, что каким-то образом воспользуюсь преимуществами векторизации, но мои навыки программирования здесь ограничены.
В моем реальном df общее число столбцов, с которыми я хотел бы сделать это, составляет> 50, поэтому автоматизированный процессидеально!
Ожидаемый результат:
# A tibble: 10 x 7
name x rank_01 y rank_02 z rank_03
* <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A 9.37 8 11.5 4 10.9 2
2 B 10.2 6 10.4 5 10.8 3
3 C 9.16 10 9.38 10 10.1 9
4 D 11.6 1 7.79 8 8.01 10
5 E 10.3 5 11.1 2 10.6 1
6 F 9.18 9 9.96 9 9.94 8
7 G 10.5 4 9.98 6 9.84 6
8 H 10.7 2 10.9 1 8.53 7
9 I 10.6 3 10.8 3 9.52 4
10 J 9.69 7 10.6 7 10.4 5