изменение формы DF от длинного к широкому с двумя факторами (rstudio) - PullRequest
0 голосов
/ 19 марта 2020

У меня есть фрейм данных, который выглядит примерно так:

CLIENT_CODE  TIME  DATE  question1  question2  question3  question4 ....ETC
AA1234         1   12/1      1          3          4        TEXT11
BB1234         1   12/2      0          8          2        TEXT9 
CC1234         1   13/1      NA         3          8        TEXT8
AA1234         2   15/2      6          7          9        TEXT7
BB1234         3   17/3      2          3          7        TEXT6
CC1234         3   21/4      2          5          4        TEXT5
BB1234         2   12/6      9          3          2        TEXT3
CC1234         2   02/7      2          2          1        TEXT2

Теперь я пытаюсь (и боролся с этим несколько часов) сделать фактор (c_code) как моя строка (чтобы объединить несколько c_code в одну строку, в которой они совпадают) и превратить фактор времени в столбец, чтобы каждый раз иметь свои собственные ответы на вопрос 1, вопрос 2, вопрос 3 ... ET C. примерно так:

CLIENT_CODE  DATE_1  q1_1  q2_1  q3_1 ...ETC| DATE_2  q1_2  q2_2   q3_2 ...ETC| 
AA1234       12/1     1   3   4  TEXT11     | 15/2     5     4      2         |
BB1234       12/2     0   8   2  TEXT9      | 12/6     2     3      4         |
CC1234       13/1     NA  3   8  TEXT8      | 02/7     3     3      2         |

1 Ответ

0 голосов
/ 19 марта 2020

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

intermediate <- melt(test, id.vars = c("CLIENT_CODE", "TIME"))

Это даст фрейм данных с 4 столбцами: CLIENT_CODE, TIME, variable и value. Столбец переменной содержит номер вопроса, а столбец значения содержит ответ. Затем вы можете привести этот промежуточный кадр в нужную вам форму.

final <- dcast(intermediate, CLIENT_CODE ~ variable + TIME, value.var = "value")

Эта окончательная версия содержит столбцы с комбинациями времени и вопроса, и функция приведения автоматически переименовывает столбцы в той форме, для которой вы задали запрос (например, "q1_1", "q2_2" и т. Д. c.), но дает их в другом порядке, поэтому вам, возможно, придется немного переставить.

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