簡體   English   中英

如何將矩陣轉換為R中具有更多列的矩陣

[英]How to transform matrix into matrix with more columns in r

我正在嘗試將具有兩列的矩陣轉換為另一種形式的矩陣。 結合兩者的是從1:5開始的編號。 有沒有人暗示可以更輕松地進行以下操作?

預先感謝這是我的代碼

data <- matrix(c(rep(1:5,6),101:130),byrow=FALSE,ncol=2)
    data
         [,1] [,2]
 [1,]    1  101
 [2,]    2  102
 [3,]    3  103
 [4,]    4  104
 [5,]    5  105
 [6,]    1  106
 [7,]    2  107
 [8,]    3  108
 [9,]    4  109
[10,]    5  110
[11,]    1  111
[12,]    2  112
[13,]    3  113
[14,]    4  114
[15,]    5  115
[16,]    1  116
[17,]    2  117
[18,]    3  118
[19,]    4  119
[20,]    5  120
[21,]    1  121
[22,]    2  122
[23,]    3  123
[24,]    4  124
[25,]    5  125
[26,]    1  126
[27,]    2  127
[28,]    3  128
[29,]    4  129
[30,]    5  130

data.2 <- matrix(data[,2],ncol=6)
data.2
      [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  101  106  111  116  121  126
[2,]  102  107  112  117  122  127
[3,]  103  108  113  118  123  128
[4,]  104  109  114  119  124  129
[5,]  105  110  115  120  125  130
rownames(data.2) <- c(1:5)
data.2
  [,1] [,2] [,3] [,4] [,5] [,6]
1  101  106  111  116  121  126
2  102  107  112  117  122  127
3  103  108  113  118  123  128
4  104  109  114  119  124  129
5  105  110  115  120  125  130
data <- matrix(c(rep(1:5,6),101:130),byrow=FALSE,ncol=2)

res <- t(unstack(data.frame(data), X2~X1))
#clean up rownames:
rownames(res) <- gsub("X", "", rownames(res))

#  [,1] [,2] [,3] [,4] [,5] [,6]
#1  101  106  111  116  121  126
#2  102  107  112  117  122  127
#3  103  108  113  118  123  128
#4  104  109  114  119  124  129
#5  105  110  115  120  125  130

如果您確定第一列始終是第n次1:5重復,那么您可以簡單地從第二列創建矩陣:

matrix(data[,2], nrow=5)

或者,您可以按第一列對矩陣進行排序:

matrix(data[order(data[,1]),2], nrow=5, byrow=TRUE)

我認為@Roland的想法比我的解決方案要好:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM