r преобразовать длинные данные в широкие с неизвестным количеством столбцов

Я уверен, что это тривиально, но я не могу найти, как это сделать.

У меня есть фрейм данных, в котором есть люди, каждый из которых может иметь несколько свойств, и каждое свойство классифицируется несколькими способами. В настоящее время он в длинной форме, с записью, похожей на (в схематичном виде, на самом деле это немного сложнее):

IndividualID Property PropClass 
1            X         A 
1            Y         B 
2            X         A 
3            Y         B
3            W         C
3            Z         A

Что мне нужно, так это одна строка для каждого отдельного идентификатора с индивидуальным идентификатором, а затем пары столбцов для каждого свойства и PropClass, которые этот человек имеет в исходном файле, поэтому в этом случае:

 IndividualID  Prop1   PropClass1 Prop2  PropClass2  Prop3  PropClass3
 1             X       A          Y      B           NA     NA
 2             X       A          NA     NA          NA     NA
 3             Y       B          W      C           Z      A

Таким образом, должно быть столько переменных Prop и PropClass, сколько максимальное количество строк для любого индивидуального идентификатора в исходном наборе данных (, который невелик, около 5 ), и где у человека меньше строк в исходном наборе данных. чем это максимальное число, в дополнительных столбцах, которые ничего не значат для этого человека, есть NA. Порядок переменных Prop и PropClass для индивидуума не имеет значения (, хотя он может также быть исходным порядком в файле длинного формата ).

Очевидно, это легко сделать (, например. используя reshape ), если у вас есть одна пара столбцов Prop и propClass для каждого возможного значения Prop, но существует несколько сотен возможных значений Prop, поэтому файл становится огромным и бесполезным. Я не могу поверить, что нет простого способа сделать то, что я хочу, но я не нашел его, несмотря на то, что мне кажется усердным поиском. Пожалуйста, скажите мне, что я идиот, и если да, то как мне вылечить свой идиотизм.

5
задан Kevin McConway 2 July 2012 в 22:01
поделиться