Как преобразовать / преобразовать фрейм данных в длинном формате в широкий формат без агрегирования записей? - PullRequest
3 голосов
/ 04 июня 2011

Из этого:

> 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 Ответ

5 голосов
/ 04 июня 2011

Поскольку столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...