以下是示例数据集:
data.frame(
Index = seq(1,5),
X_50 = sample(1:5, replace = TRUE),
X_90 = sample(1:5, replace = TRUE),
Y_50 = sample(1:5, replace = TRUE),
Y_90 = sample(1:5, replace = TRUE),
Z_50 = sample(1:5, replace = TRUE),
Z_90 = sample(1:5, replace = TRUE)
)
索引 | X_50 | X_90 | Y_50 | Y_90 | Z_50 | Z_90 |
---|---|---|---|---|---|---|
1 | 3 | 5 | 1 | 10 | 3 | 4 |
2 | 8 | 8 | 6 | 6 | 9 | 7 |
3 | 9 | 3 | 3 | 7 | 7 | 4 |
4 | 3 | 10 | 8 | 10 | 6 | 1 |
5 | 7 | 2 | 3 | 5 | 10 | 8 |
我正在尝试将数据集的列旋转为如下所示:
索引 | 百分位值 | X | 是 | Z |
---|---|---|---|---|
1 | 50 | 3 | 1 | 3 |
1 | 90 | 5 | 10 | 4 |
2 | 50 | 8 | 6 | 9 |
2 | 90 | 8 | 6 | 7 |
3 | 50 | 9 | 3 | 7 |
3 | 90 | 3 | 7 | 4 |
等等...
我尝试了pivot_longer,但没有得到上述结果。有人可以帮我吗?谢谢。
您可以使用
pivot_longer()
包中的 tidyr
函数。
library(tidyr)
df <- data.frame(
Index = seq(1,5),
X_50 = sample(1:5, replace = TRUE),
X_90 = sample(1:5, replace = TRUE),
Y_50 = sample(1:5, replace = TRUE),
Y_90 = sample(1:5, replace = TRUE),
Z_50 = sample(1:5, replace = TRUE),
Z_90 = sample(1:5, replace = TRUE)
)
df
#> Index X_50 X_90 Y_50 Y_90 Z_50 Z_90
#> 1 1 2 1 3 5 2 5
#> 2 2 4 1 3 1 4 2
#> 3 3 2 5 5 4 5 2
#> 4 4 1 5 1 5 3 3
#> 5 5 1 2 1 2 1 1
df |> pivot_longer(cols = -Index,
names_to = c(".value", "percentile_value"),
names_sep = "_")
#> # A tibble: 10 × 5
#> Index percentile_value X Y Z
#> <int> <chr> <int> <int> <int>
#> 1 1 50 2 3 2
#> 2 1 90 1 5 5
#> 3 2 50 4 3 4
#> 4 2 90 1 1 2
#> 5 3 50 2 5 5
#> 6 3 90 5 4 2
#> 7 4 50 1 1 3
#> 8 4 90 5 5 3
#> 9 5 50 1 1 1
#> 10 5 90 2 2 1
创建于 2024-04-25,使用 reprex v2.1.0