我清理了我执行的模拟的文本输出。我用R生成了一个数据框架,其中包含19个类似的数据集,它们像这样垂直堆叠:
Data set 1
Data set 2
.
.
Data set 19
每个数据集有260行和4列数据,格式如下:
A F 124 241
.
.
D Q 748 854
由于每个数据集在列1 &2、包含19个数据集的整个数据框架有这样的形式:
A F 124 241
.
.
D Q 748 856
A F 068 937
.
.
D Q 300 099
.
.
.
A F 175 235
.
.
D Q 725 893
我想弄清楚如何将数据集横向堆叠。自列1 &2对于所有19个数据集都是相同的,从第二个数据集开始,我只想提取列3 & &;创建一个布局如下的数据帧:
A F 124 241 068 937 . . . 175 235
.
.
D Q 748 856 300 099 . . . 725 893
因为我从数据集#1中提取了4列,而从数据集#2到#19中只提取了2列,所以新的数据框架将有40列260行。
如果你有关于如何重新格式化这个数据框架的技巧,请让我知道。谢谢你!欢呼,Di
下面是一个例子:
library(dplyr)
library(tidyr)
tmp <- data.frame(
id1 = rep(LETTERS[1:13], 19),
id2 = rep(LETTERS[14:26], 19),
c1 = seq(1, 19*13, by=1),
c2 = seq(19*13, 1, by=-1)
)
在您的数据集中,您必须添加一个数据集编号变量。因为每个数据集有13行,所以我这样做:
tmp <- tmp %>%
mutate(ds = rep(1:19, each=13))
然后,您可以使用tidyr
包中的pivot_wider()
以所需的方式重塑您的数据。
tmp <- tmp %>%
pivot_wider(names_from = ds, values_from = c("c1", "c2"))
tmp
# # A tibble: 13 x 40
# id1 id2 c1_1 c1_2 c1_3 c1_4 c1_5 c1_6 c1_7 c1_8 c1_9 c1_10 c1_11 c1_12 c1_13 c1_14 c1_15 c1_16 c1_17 c1_18
# <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 A N 1 14 27 40 53 66 79 92 105 118 131 144 157 170 183 196 209 222
# 2 B O 2 15 28 41 54 67 80 93 106 119 132 145 158 171 184 197 210 223
# 3 C P 3 16 29 42 55 68 81 94 107 120 133 146 159 172 185 198 211 224
# 4 D Q 4 17 30 43 56 69 82 95 108 121 134 147 160 173 186 199 212 225
# 5 E R 5 18 31 44 57 70 83 96 109 122 135 148 161 174 187 200 213 226
# 6 F S 6 19 32 45 58 71 84 97 110 123 136 149 162 175 188 201 214 227
# 7 G T 7 20 33 46 59 72 85 98 111 124 137 150 163 176 189 202 215 228
# 8 H U 8 21 34 47 60 73 86 99 112 125 138 151 164 177 190 203 216 229
# 9 I V 9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230
# 10 J W 10 23 36 49 62 75 88 101 114 127 140 153 166 179 192 205 218 231
# 11 K X 11 24 37 50 63 76 89 102 115 128 141 154 167 180 193 206 219 232
# 12 L Y 12 25 38 51 64 77 90 103 116 129 142 155 168 181 194 207 220 233
# 13 M Z 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234
对解决方案感兴趣的人:
DaveArmstrong的解决方案使我能够横向排列我的数据。但是,它将col1和col2组合在一起。我想搭配两种颜色。从每个数据集中取2个。我提供了脚本的屏幕截图(附在此消息中),其中包含需要在Dave的脚本中实现的附加行。完整解决方案