我希望使用 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 语法来实现此目的。
任何帮助将不胜感激
您可以在应用之前重命名您的列pivot_longer:
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\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |