[英]Append observation at end of row from another column in R
我有900行400列的数据。 每两列携带特定信息。 我说,有ABCD列,我想在A和B列的末尾追加C和C列。
例如:
A B C D E F
3 4 5 6 7 8
9 10 11 12 13 14
更改为
Column 1 Column 2
3 4
9 10
5 6
11 12
7 8
13 14
您可以通过将原始df
的奇数和偶数列堆叠到2个新列中来创建新的data.frame
。
df1 <- data.frame(Column1 = unlist(df[,c(T,F)]),
Column2 = unlist(df[,c(F,T)]))
> df1
# Column1 Column2
#A1 3 4
#A2 9 10
#C1 5 6
#C2 11 12
#E1 7 8
#E2 13 14
假设o
都是数字,则转换为矩阵:
o <- read.table(text='A B C D E F
3 4 5 6 7 8
9 10 11 12 13 14', header=TRUE)
o <- as.matrix(o)
首先,您实际上有成对的列,因此可以将其视为3D数组。 我们可以就地重塑为3d:
dim(o) <- c(2,2,3)
所以o
看起来像这样:
> o
, , 1
[,1] [,2]
[1,] 3 4
[2,] 9 10
, , 2
[,1] [,2]
[1,] 5 6
[2,] 11 12
, , 3
[,1] [,2]
[1,] 7 8
[2,] 13 14
使用aperm移动索引,并使用dim<-
重塑形状,我们可以非常接近:
>`dim<-`(aperm(o, c(3,1,2)), c(6,2))
[,1] [,2]
[1,] 3 4
[2,] 5 6
[3,] 7 8
[4,] 9 10
[5,] 11 12
[6,] 13 14
如果您实际上确实想要上面的2d顺序,则需要转置:
> t(`dim<-`(aperm(o, c(2,1,3)), c(2,6)))
[,1] [,2]
[1,] 3 4
[2,] 9 10
[3,] 5 6
[4,] 11 12
[5,] 7 8
[6,] 13 14
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.