Мутирование нескольких столбцов с разными функциями одновременно - PullRequest
0 голосов
/ 09 апреля 2020

Рассмотрим следующую таблицу:

df <- tibble(
  col1 = sample(10:1000, 5),
  col2 = sample(1000:10000, 5),
  col3 = sample(100:500, 5)
)

Я хотел бы разделить col1 и col3 на 10 и col2 на 1000.

Я могу это сделать с помощью 2 mutate_at функций, таких как:

df %>% 
  mutate_at(
    c("col1", "col3"),
    ~ .x / 10
  ) %>% 
  mutate_at(
    "col2",
    ~ .x / 1000
  )

Есть ли способ сделать вышеупомянутое в одной mutate_x функции?

1 Ответ

2 голосов
/ 09 апреля 2020

Как говорит Ронак, across заменит выбранные глаголы _at, _if, _all в новейшей версии dplyr. Вы можете начать использовать его до выпуска CRAN, выполнив remotes::install_github("tidyverse/dplyr").

. Правильное использование across немного отличается от его комментария выше.

df %>% mutate(across(c(col1, col2), ~.x/10), 
              across(col3, ~.x/1000))
#> # A tibble: 5 x 3
#>    col1  col2  col3
#>   <dbl> <dbl> <dbl>
#> 1  87.3  127. 0.324
#> 2  19.5  752. 0.194
#> 3  74.3  972. 0.197
#> 4  42.5  258. 0.116
#> 5  88.6  749. 0.11
...