我有以下示例数据集:
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
我想重新排序列,所需的输出是这样的,
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
第11栏和第11栏第1列和第1列之后是12 2,第13栏&amp;第3栏和第3栏之后是14 4等等......
我已经在这个网站上查看了几个相关的主题但是找不到相关的主题。
答案 0 :(得分:0)
不是超级优雅,但它适用于您的示例,并希望您的完整数据:
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]