繁体   English   中英

在R的另一列的行尾追加观察

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM