【问题标题】:How to transform a data frame by using pivot_longer如何使用 pivot_longer 转换数据框
【发布时间】:2022-08-15 15:35:46
【问题描述】:
我有以下数据集
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))
而且,我想把它变成
df_result <- data.table(
id = c(1),
field_name = c(\"field_a\", \"field_b\"),
x = c(10, 30),
y = c(20, 40))
通过使用考虑后缀 \".x\" 和 \".y\" 的 \"pivot_longer\" 函数。
在我的真实数据中,这将是更多的领域。但我想看看如何处理它 2 例如。
谢谢!
标签:
r
dataframe
pivot
tidyr
【解决方案1】:
您可以在names_to 中设置".value" 并提供names_sep 或names_pattern 之一来指定如何拆分列名。
library(tidyr)
df %>%
pivot_longer(-1, names_to = c("field_name", ".value"), names_sep = "\\.")
# # A tibble: 2 × 4
# id field_name x y
# <dbl> <chr> <dbl> <dbl>
# 1 1 field_a 10 20
# 2 1 field_b 30 40
names_sep = "\\." 可以替换为 names_pattern = "(.+)\\.(.+)"。