Как преобразовать / переформировать фрейм данных в длинном формате в широкий формат без агрегирования записей?
Из этого:
> test <- data.frame(x = c("a","a","a"), y = c("b","b","c"), z = c(1,2,1))
> test
x y z
1 a b 1
2 a b 2
3 a c 1
К этому:
x b c
1 a 1 NA
2 a 2 NA
3 a NA 1
1 ответ:
Поскольку столбец
x
в кадре данныхtest
не идентифицирует однозначно строки, и все же вы не хотите делать какую-либо агрегацию, вам нужно дополнить кадр данных уникальным столбцомid
, а затем использоватьdcast()
из пакетаreshape2
:require(reshape2) test$id <- 1:nrow(test) > dcast(test, id + x ~ y, value_var = 'z')[,-1] x b c 1 a 1 NA 2 a 2 NA 3 a NA 1