使用 dplyr 旋转多个列

The*_*oat 2 pivot r dplyr

我希望使用 dplyr 语法将宽格式的多列转为更长的列

我的数据如下:

x <- data.frame(
  provider_id = c(1, 2, 3),
  code_1 = c("207ZP0102X", "208600000X", "208100000X"),
  primary = c("y", "n", "n"),
  code_2 = c("208000000X", "207ZP0102X", "208600000X"),
  primary = c("n", "n", "y"),
  code_3 = c("208100000X", "208600000X", "207ZP0102X"),
  primary = c("n", "y", "n")
)
Run Code Online (Sandbox Code Playgroud)

我希望转换为以下格式,但我无法弄清楚 dplyr 语法来实现此目的。

在此输入图像描述

任何帮助将不胜感激

ste*_*fan 6

您可以在应用之前重命名您的列pivot_longer

\n
library(dplyr)\nlibrary(tidyr)\n\nx %>% \n  rename(primary_1 = primary, primary_2 = primary.1, primary_3 = primary.2) %>% \n  pivot_longer(-provider_id, names_to = c(".value", "Code"), names_sep = "_") %>% \n  rename(value = code) %>% \n  mutate(Code = paste0("Code_", Code))\n#> # A tibble: 9 \xc3\x97 4\n#>   provider_id Code   value      primary\n#>         <dbl> <chr>  <chr>      <chr>  \n#> 1           1 Code_1 207ZP0102X y      \n#> 2           1 Code_2 208000000X n      \n#> 3           1 Code_3 208100000X n      \n#> 4           2 Code_1 208600000X n      \n#> 5           2 Code_2 207ZP0102X n      \n#> 6           2 Code_3 208600000X y      \n#> 7           3 Code_1 208100000X n      \n#> 8           3 Code_2 208600000X y      \n#> 9           3 Code_3 207ZP0102X n\n
Run Code Online (Sandbox Code Playgroud)\n