Я также разместил этот вопрос на R-help, и получил ответ от Фила Спектора, предлагающий unstack
.
Это модификация ответа Льва Алексеева
my.data <- "A: 1
B: 2
C: 10
A: 34
B: 20
C: 6.7
A: 2
B: 78
C: 35"
df <- read.delim(textConnection(my.data),header=FALSE,sep=":",strip.white=TRUE)
unstack(df, V2 ~ V1)
В результате:
A B C
1 1 2 10.0
2 34 20 6.7
3 2 78 35.0
Некоторые преимущества этого подхода по сравнению с другими продуманными ответами состоят в том, что вам не нужно заранее указывать количество столбцов. Также не требуется никаких дополнительных пакетов.