我有一个如下所示的数据集:
A B C D E F G H A B C D E F G H
-9.03 0.08 1 2 -8.52 0.06 3 4 -10.42 0.13 5 6 -10.04 0.1 7 8
4.87 0.17 9 1 3.71 0.12 2 3 7.74 0.3 4 5 6.54 0.21 6 7
数据集只有2行长,但A-H列重复98次。我想重组数据集,使其看起来像这样:
-9.03 0.08 1 2 4.87 0.17 9 1
-8.52 0.06 3 4 3.71 0.12 2 3
-10.42 0.13 5 6 7.74 0.3 4 5
-10.04 0.1 7 8 6.54 0.21 6 7
理想情况下,最终数据集长度为98行,只有8列。
欢迎任何/所有建议!提前谢谢!
此致 艾米
答案 0 :(得分:3)
这似乎可以按照您正在寻找的顺序为您提供所需的输出。
tmp <- read.table(text="A B C D E F G H A B C D E F G H
-9.03 0.08 1 2 -8.52 0.06 3 4 -10.42 0.13 5 6 -10.04 0.1 7 8
4.87 0.17 9 1 3.71 0.12 2 3 7.74 0.3 4 5 6.54 0.21 6 7",
header = TRUE, check.names = FALSE)
step1 <- do.call(cbind, split(c(as.matrix(tmp)), 1:8))
cbind(step1[, c(TRUE, FALSE)], step1[, c(FALSE, TRUE)])
# 1 3 5 7 2 4 6 8
# [1,] -9.03 0.08 1 2 4.87 0.17 9 1
# [2,] -8.52 0.06 3 4 3.71 0.12 2 3
# [3,] -10.42 0.13 5 6 7.74 0.30 4 5
# [4,] -10.04 0.10 7 8 6.54 0.21 6 7
答案 1 :(得分:0)
尝试:
arr1 <- aperm(array(c(as.matrix(dat1)),c(4,2,4)),c(3,1,2))
dim(arr1) <- c(4,8)
cbind(arr1[,c(TRUE,FALSE)], arr1[,c(FALSE,TRUE)])
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] -9.03 0.08 1 2 4.87 0.17 9 1
#[2,] -8.52 0.06 3 4 3.71 0.12 2 3
#[3,] -10.42 0.13 5 6 7.74 0.30 4 5
#[4,] -10.04 0.10 7 8 6.54 0.21 6 7
dat1 <- structure(list(A = c(-9.03, 4.87), B = c(0.08, 0.17), C = c(1L,
9L), D = c(2L, 1L), E = c(-8.52, 3.71), F = c(0.06, 0.12), G = c(3L,
2L), H = c(4L, 3L), A = c(-10.42, 7.74), B = c(0.13, 0.3), C = c(5L,
4L), D = c(6L, 5L), E = c(-10.04, 6.54), F = c(0.1, 0.21), G = c(7L,
6L), H = c(8L, 7L)), .Names = c("A", "B", "C", "D", "E", "F",
"G", "H", "A", "B", "C", "D", "E", "F", "G", "H"), class = "data.frame", row.names = c(NA,
-2L))