如何使用pivot_longer转换数据框

And*_*rii 1 pivot r dataframe tidyr

我有以下数据集

df <- data.table(
  id = c(1),
  field_a.x = c(10),
  field_a.y = c(20),
  field_b.x = c(30),
  field_b.y = c(40))
Run Code Online (Sandbox Code Playgroud)

而且,我想把它变成

df_result <- data.table(
  id = c(1),
  field_name = c("field_a", "field_b"),
  x = c(10, 30),
  y = c(20, 40))
Run Code Online (Sandbox Code Playgroud)

通过使用“pivot_longer”函数并考虑后缀“.x”和“.y”。

我的真实数据中会有更多的字段。但我想看看如何处理 2 例如。

谢谢!

Dar*_*sai 7

您可以设置".value"names_to提供以下之一names_sepnames_pattern来指定如何拆分列名称。

\n
library(tidyr)\n\ndf %>%\n  pivot_longer(-1, names_to = c("field_name", ".value"), names_sep = "\\\\.")\n\n# # A tibble: 2 \xc3\x97 4\n#      id field_name     x     y\n#   <dbl> <chr>      <dbl> <dbl>\n# 1     1 field_a       10    20\n# 2     1 field_b       30    40\n
Run Code Online (Sandbox Code Playgroud)\n

names_sep = "\\\\."可以替换为names_pattern = "(.+)\\\\.(.+)".

\n