gpt4 book ai didi

r - 将每 n 行的列转换为多行

转载 作者:行者123 更新时间:2023-12-01 23:15:57 25 4
gpt4 key购买 nike

我有一个数据框,我成功地将一列的每第 n 行分开并将片段排列成行:

list = data.frame(x = c("A", "1", "2", "3", "B", "1", "2", "3"))

x
1 A
2 1
3 2
4 3
5 B
6 1
7 2
8 3

  w x y z
1 A 1 2 3
2 B 1 2 3

我设法实现了这一目标:

table <- data.frame(matrix(list$x, ncol = 4, byrow = TRUE))

在下一步中,我想对多列执行此操作,并将生成的表格放在彼此之下。

来自这样的事情:

   x  y  z
1 A D G
2 3 5 6
3 3 7 4
4 6 7 5
5 B E H
6 4 5 2
7 3 3 4
8 7 7 6
9 C F I
10 7 4 3
11 3 6 9
12 6 8 0

   w  x  y  z  
1 A 3 3 6
2 B 4 3 7
3 C 7 3 6
4 D 5 7 6
5 E 5 3 7
6 F 4 6 8
7 G 6 4 7
8 H 2 4 6
9 I 3 9 0

我真的被这个困住了。如果有人有想法,我将不胜感激。

最佳答案

利用 lapplydplyr::bind_rows() 可以像这样实现:

library(dplyr)

df_list <- lapply(list, function(x) data.frame(matrix(x, ncol = 4, byrow = TRUE)))

df_list %>%
dplyr::bind_rows() %>%
setNames(c("w", "x", "y", "z"))
#> w x y z
#> 1 A 3 3 6
#> 2 B 4 3 7
#> 3 C 7 3 6
#> 4 D 5 7 7
#> 5 E 5 3 7
#> 6 F 4 6 8
#> 7 G 6 4 5
#> 8 H 2 4 6
#> 9 I 3 9 0

或者使用do.callrbind:

df_list <- do.call(rbind, c(df_list, list(make.row.names = FALSE)))
setNames(df_list, c("w", "x", "y", "z"))
#> w x y z
#> 1 A 3 3 6
#> 2 B 4 3 7
#> 3 C 7 3 6
#> 4 D 5 7 7
#> 5 E 5 3 7
#> 6 F 4 6 8
#> 7 G 6 4 5
#> 8 H 2 4 6
#> 9 I 3 9 0

数据

list <- read.table(text = "   x  y  z

1 A D G
2 3 5 6
3 3 7 4
4 6 7 5
5 B E H
6 4 5 2
7 3 3 4
8 7 7 6
9 C F I
10 7 4 3
11 3 6 9
12 6 8 0", header = TRUE)

关于r - 将每 n 行的列转换为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68880874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com