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