Я знаю, что моя проблема тривиальна, однако сейчас я изучаю методы, как изменить данные различными способами, поэтому, пожалуйста, поймите.
У меня есть такие данные:
Input = (
'col1 col2
A 2
B 4
A 7
B 3
A 4
B 2
A 4
B 6
A 3
B 3')
df = read.table(textConnection(Input), header = T)
> df
col1 col2
1 A 2
2 B 4
3 A 7
4 B 3
5 A 4
6 B 2
7 A 4
8 B 6
9 A 3
10 B 3
И я хотел бы иметь что-то вроде этого, где имена столбцов не важны:
col1 v1 v2 v3 v4 v5
1 A 2 7 4 4 3
2 B 4 3 2 6 3
Пока что я сделал что-то вроде:
res_1 <- aggregate(col2 ~., df, toString)
col1 col2
1 A 2, 7, 4, 4, 3
2 B 4, 3, 2, 6, 3
И это на самом деле работает, однако, у меня есть один столбец и значения разделены запятыми, вместо того, чтобы быть в новых столбцах, поэтому я решил исправить это:
res_2 <- do.call("rbind", strsplit(res_1$col2, ","))
[,1] [,2] [,3] [,4] [,5]
[1,] "2" " 7" " 4" " 4" " 3"
[2,] "4" " 3" " 2" " 6" " 3"
Адн, наконец, объединить его и удалить ненужные столбцы:
final <- cbind(res_1,res_2)
final$col2 <- NULL
col1 1 2 3 4 5
1 A 2 7 4 4 3
2 B 4 3 2 6 3
Итак, у меня есть желаемый результат, но я не удовлетворен методом, я уверен, что есть одна простая и короткая команда для этого. Как я уже сказал, я хотел бы изучить новые более элегантные варианты, используя различные пакеты. Спасибо!