2017-07-03 1 views
-1

Je l'ensemble de données exemple suivant:Offset colonnes en réorganisant les colonnes de r

set.seed (1988) 
data <- matrix(sample(1:100, 80), 5, 16) 
colnames(data) <- paste0("V", 1:16) 

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 
56 40 75 78 33 82 97 23 99 16 26 69 60 50 93 10 
45 30 71 1 64 51 46 47 81 70  8 53 34  4 29  9 
37 65 73 54 39 79 55 95 96 44 43  3 41 49 22 17 
18 83 14 38 68 88 63 5 28 36 35 85 72 52 86  7 
15 13 92 62 58 57 25 84 89 48 74 20 59 12 76 19 

Je veux Réorganiser les colonnes et le désiré sortie est quelque chose comme ça,

redata <- data[ , c(1:2, 11:12, 3:4, 13:14, 5:6, 15:16, 7:10)] 

V1 V2 V11 V12 V3 V4 V13 V14 V5 V6 V15 V16 V7 V8 V9 V10 
56 40 26 69 75 78 60 50 33 82 93 10 97 23 99 16 
45 30 8 53 71 1 34 4 64 51 29  9 46 47 81 70 
37 65 43 3 73 54 41 49 39 79 22 17 55 95 96 44 
18 83 35 85 14 38 72 52 68 88 86  7 63  5 28 36 
15 13 74 20 92 62 59 12 58 57 76 19 25 84 89 48 

où la colonne 11 & 12 vient après les colonnes 1 & 2, colonne 13 & 14 vient après les colonnes 3 & 4 et ainsi de suite ...

  • J'ai des centaines de colonnes comme celui-ci dans les données réelles et, par conséquent, il sera très difficile de donner l'index de colonne ou le nom

J'ai regardé plusieurs threads connexes dans ce site, mais ne pouvait pas trouver ceux qui sont pertinents.

+2

Je ne comprends pas ce qui est la question –

+0

s'il vous plaît expliquer plus en détail – Wen

+1

vous devez penser au modèle de l'ordre. Une fois que vous serez en mesure de l'expliquer en détail, vous saurez probablement comment l'implémenter. –

Répondre

0

Pas super élégant mais il fonctionne pour votre exemple, et je l'espère pour vos données complète:

col_order <- c(1,2,11,12,3,4,13,14,5,6,15,16,7,8,17,18,9,10,19,20) 
i <- 1 
while(i < ncol(data)/20){ 
    col_order <- c(col_order,col_order+20) 
    i <- i+1 
} 
col_order <- intersect(col_order,1:ncol(data)) 
data_new <- data[,col_order]