簡體   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