Измените имена столбцов, используя * plyr, где отображение задается двумя столбцами другого фрейма данных - PullRequest
0 голосов
/ 21 октября 2019

У меня есть простой фрейм данных a

  x  y
1 1 11
2 2 22
3 3 33

и еще один b

  old  new
1   x haha
2   y hoho

, который сопоставляет имена старых столбцов с именами новых столбцов. Мне нужен следующий фрейм данных c.

  haha hoho
1    1   11
2    2   22
3    3   33

Обратите внимание, что фактический a имеет много столбцов, и отображение двух столбцов в b не является прямым. Кроме того, строки b могут отличаться от в том же порядке, что и столбцы a.

Можно ли использовать plyr/dplyr? Примерно так в python: Изменение имен столбцов данных по столбцам из другого python ?

1 Ответ

1 голос
/ 22 октября 2019

Это прекрасная возможность использовать !!:

library(tidyverse)

data <- tribble(
  ~x, ~y,
  1,  11,
  2,  22,
  3,  33
)

name_tbl <- tribble(
  ~old, ~new,
  "x",  "haha",
  "y",  "hoho"
)

(name_pairs <- with(name_tbl, set_names(old, new)))
#> haha hoho 
#>  "x"  "y"

rename(data, !!name_pairs)
#> # A tibble: 3 x 2
#>    haha  hoho
#>   <dbl> <dbl>
#> 1     1    11
#> 2     2    22
#> 3     3    33

Создано в 2019-10-21 с помощью пакета Представить (v0.3.0)

rename() использует пары имя-значение (с новыми именами в качестве имен), поэтому нам просто нужно: 1) взять вектор старых имен, 2) дать ему имена новых имен,и 3) вызовите rename() с указанным вектором без кавычек, поскольку мы передаем пары как значение объекта, а не как синтаксис.

...