Переход от длинного формата к широкому с индикаторами - PullRequest
0 голосов
/ 24 сентября 2011

1001 * Все- *

Мне нужно перейти с длинного формата на широкоформатный в R, но мне нужно, чтобы значения столбца были равны 1 или нулю в зависимости от того, присутствует ли конкретная переменная для субъекта.

Входные данные выглядят так:

Subject Product
    1   ProdA
    1   ProdB
    1   ProdC
    2   ProdB
    2   ProdC
    2   ProdD
    3   ProdA
    3   ProdB

и я хочу, чтобы оно было

Subject ProdA   ProdB   ProdC   ProdD
    1   1   1   1   0
    2   0   1   1   1
    3   1   1   0   0

Есть ли способ в R сделать это?

EDIT:

Один из способов, которым я считаю, состоит в том, чтобы сначала составить таблицу данных:

tbl<-data.frame(table(data))

Затем примените

final <- cast(tbl, Subject~Product, max)

Интересно, есть ли более эффективный способ?

1 Ответ

1 голос
/ 24 сентября 2011
xtabs(data=dat)
       Product
Subject ProdA ProdB ProdC ProdD
      1     1     1     1     0
      2     0     1     1     1
      3     1     1     0     0

Чуть более читаемая версия сделает явным выражение fiormula:

xtabs( ~Subject+Product, data=dat)

Если вы хотите использовать stats :: reshape, попробуйте это:(Но это не возвращает числа.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...