Чтобы упростить (и проверить мое понимание), ваша проблема сводится к тому, как изменить форму одного столбца data.frame
таким образом, чтобы этот столбец был разбит на каждый 10-й элемент.
Тамэто функция в базе R, которая делает это, называемая unstack
.Вы можете использовать это в своей задаче следующим образом.
Сначала настройте несколько фиктивных данных:
df <- data.frame(
A=1:50,
B=101:150
)
Теперь, чтобы использовать unstack
, нам нужно создать временный data.frame
, содержащийнаши данные для разборки, а также индикатор того, как разложить.Индикатор в вашем случае - это повторяющийся вектор 1:10
, созданный с использованием rep
:
tmp <- data.frame(
X=df$B,
ind=rep(1:10, nrow(df)/10)
)
Затем используйте магию unstack
:
unstack(tmp, X~ind)
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 101 102 103 104 105 106 107 108 109 110
2 111 112 113 114 115 116 117 118 119 120
3 121 122 123 124 125 126 127 128 129 130
4 131 132 133 134 135 136 137 138 139 140
5 141 142 143 144 145 146 147 148 149 150
Объедините его с вашимподмножество вашего первого столбца в оригинале df
:
rbind(A=df$A[1:10], unstack(tmp, X~ind))
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
A 1 2 3 4 5 6 7 8 9 10
2 101 102 103 104 105 106 107 108 109 110
3 111 112 113 114 115 116 117 118 119 120
4 121 122 123 124 125 126 127 128 129 130
5 131 132 133 134 135 136 137 138 139 140
6 141 142 143 144 145 146 147 148 149 150