Переупорядочить столбец динамически соответствует с помощью mutate () и через () - PullRequest
1 голос
/ 19 июня 2020

Я использую данные здесь (в частности, таблицы cpi и grosses), и я хотел бы вычислить каждый из столбцов, содержащих суммы в долларах (обозначенные как «брутто» или price 'в их именах) с точки зрения их стоимости в 2020 году. Затем я хотел бы упорядочить эти столбцы сразу после их совпадения.

Следующий метод был вдохновлен сообщением здесь :

cpi_recent <- cpi %>% # pulls most recent cpi in the tibble
  select(cpi) %>% 
  slice_tail() %>%
  pull()

grosses_adj <- grosses %>%
  mutate(year_month = floor_date(week_ending, 'month')) %>% 
  left_join(cpi, 'year_month') %>%
  mutate(across(contains(c('gross', 'price')),
                list(adj = ~ cpi_recent/cpi * .))) %>% # creates new col in 2020 dollars w/ _adj suffix
  select(-year_month, -cpi)

Однако по умолчанию все новые столбцы будут размещены после последнего столбца .

Есть ли способ динамически упорядочить новые столбцы непосредственно после соответствующего столбца , например: gross_1, gross_1_adj, price_2, price_2_adj, эт c.? Конечно, использовать select() вручную тривиально, но я предполагаю, что есть способ динамически ссылаться на эти столбцы, используя mutate() и аргумент .after.

...