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

Я выполнил фрагмент кода, подобный этому

x = data.frame(numerator = 1:3, value = letters[1:3],value1=letters[4:6])
xa = aggregate(list(x$numerator),by=list(x$value,x$value1),FUN=sum)

Но результат xa отформатирован следующим образом

 Group.1 Group.2 X1.3
1       a       d    1
2       b       e    2
3       c       f    3

Я бы хотел, чтобы мои результаты были организованы в матрицеформатировать таким образом, чтобы строки представлялись значениями Group.1, а столбцы - значениями Group.2, например:

    d e f
a   1 NULL NULL
b   NULL 2 NULL
c   NULL NULL 3

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Вы можете использовать daply из пакета plyr.

xa = daply(.data=x,
           .variables=c("value","value1"),
           .fun=function(x) sum(x$numerator))
1 голос
/ 22 августа 2017

Мы можем использовать функцию BASE R:

  tapply(x$numerator,x[,2:3],I)
        value1
value  d  e  f
    a  1 NA NA
    b NA  2 NA
    c NA NA  3
...