Мои данные выглядят так
mydf = data.frame(length=c(1,1,2,2,3),
type=c("A","B","A","B","A"),
val1=1:5,
val2=6:10)
> mydf
length type val1 val2
1 A 1 6
1 B 2 7
2 A 3 8
2 B 4 9
3 A 5 10
В этом примере type
"B" для length
3 не существует. Это типично: каждый length
имеет хотя бы один type
, но не всегда оба. Есть только два types
.
Моя цель - перевести эти данные в «более широкую» форму на type
, чтобы она выглядела следующим образом с нулями (или NA) для пропущенных значений:
length val1.A val1.B val2.A val2.B
1 1 2 6 7
2 3 4 8 9
3 5 0 10 0
Я пытался сделать это с spread()
, но не могу заставить его работать - я думал, что смогу указать type
и length
в качестве ключа, а другие столбцы в качестве значений, но это не представляется возможным. Есть ли способ сделать это?
Заранее спасибо!