在R中,可以使用tidyr包中的pivot_wider()函数将数据从长格式转换为宽格式。pivot_wider()函数可以通过多个参数来指定需要转置的列和值列的名称,但它默认只允许一个名称列和一个值列。在需要同时转置多个列和值列时,可以使用tidyr包中的pivot_longer()函数将数据转换为长格式,然后使用pivot_wider()函数将它转换为宽格式。具体步骤如下:
- 导入tidyr包:
library(tidyr)
- 创建示例数据集:
data <- data.frame(id = c(1, 1, 2, 2),
name_1 = c("a", "b", "c", "d"),
value_1 = c(100, 200, 300, 400),
name_2 = c("e", "f", "g", "h"),
value_2 = c(500, 600, 700, 800))
- 将数据转换为长格式:
data_long <- pivot_longer(data,
cols = starts_with("name"),
names_to = "name_col",
values_to = "name")
data_long <- pivot_longer(data_long,
cols = starts_with("value"),
names_to = "value_col",
values_to = "value")
- 将数据转换为宽格式:
data_wide <- pivot_wider(data_long,
id_cols = c("id", "name_col"),
names_from = "value_col",
values_from = "value")
data_wide
输出结果:
A tibble: 4 × 4
id name_col `1` `2`
<dbl> <chr> <dbl> <dbl>
1 1 name_1 100 200
2 1 name_2 500 600
3 2 name_1 300 400
4 2 name_2 700 800