将两列与第二列垂直组合,第二列的名称来自 R 中第一列的名称
Combine two columns vertically with a second column that has the names from the first column in R
例如,如果我有这个数据框:
column1 column2
v1 v4
v2 v5
v3 v6
如何制作一个新的数据框,使其看起来像这样:
column3 column4
v1 column1
v2 column1
v3 column1
v4 column2
v5 column2
v6 column2
感谢任何帮助!非常感谢!
您可以使用 tidyr
包中的 pivot_longer()
:
table <- data.frame(
column1 = paste0("v", 1:3),
column2 = paste0("v", 4:6)
)
pivot <- tidyr::pivot_longer(
table,
cols = everything(),
names_to = "column4",
values_to = "column3"
)
pivot
#> # A tibble: 6 x 2
#> column4 column3
#> <chr> <chr>
#> 1 column1 v1
#> 2 column2 v4
#> 3 column1 v2
#> 4 column2 v5
#> 5 column1 v3
#> 6 column2 v6
如果 rows/columns 的顺序很重要,您可以使用 dplyr
:
library(dplyr)
pivot %>%
relocate(column3) %>%
arrange(column3)
#> # A tibble: 6 x 2
#> column3 column4
#> <chr> <chr>
#> 1 v1 column1
#> 2 v2 column1
#> 3 v3 column1
#> 4 v4 column2
#> 5 v5 column2
#> 6 v6 column2
您可以 stack
列在一起:
stack(df)
values ind
1 v1 column1
2 v2 column1
3 v3 column1
4 v4 column2
5 v5 column2
6 v6 column2
例如,如果我有这个数据框:
column1 column2
v1 v4
v2 v5
v3 v6
如何制作一个新的数据框,使其看起来像这样:
column3 column4
v1 column1
v2 column1
v3 column1
v4 column2
v5 column2
v6 column2
感谢任何帮助!非常感谢!
您可以使用 tidyr
包中的 pivot_longer()
:
table <- data.frame(
column1 = paste0("v", 1:3),
column2 = paste0("v", 4:6)
)
pivot <- tidyr::pivot_longer(
table,
cols = everything(),
names_to = "column4",
values_to = "column3"
)
pivot
#> # A tibble: 6 x 2
#> column4 column3
#> <chr> <chr>
#> 1 column1 v1
#> 2 column2 v4
#> 3 column1 v2
#> 4 column2 v5
#> 5 column1 v3
#> 6 column2 v6
如果 rows/columns 的顺序很重要,您可以使用 dplyr
:
library(dplyr)
pivot %>%
relocate(column3) %>%
arrange(column3)
#> # A tibble: 6 x 2
#> column3 column4
#> <chr> <chr>
#> 1 v1 column1
#> 2 v2 column1
#> 3 v3 column1
#> 4 v4 column2
#> 5 v5 column2
#> 6 v6 column2
您可以 stack
列在一起:
stack(df)
values ind
1 v1 column1
2 v2 column1
3 v3 column1
4 v4 column2
5 v5 column2
6 v6 column2