Распространение по двум колонкам - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь распространить фрейм данных, но я не совсем знаком с spread() и gather().

Ниже приведен образец моих данных. У него 9 рядов с одинаковыми Application.Number. Я хотел бы закончить с одним рядом на Application.Number-Decicion комбинацию. Остальные переменные date_generated date_decided time_to_decision и text должны повторяться для каждой комбинации Application.Number-Decicion или должна быть взята последняя. Данные уже отсортированы по Application.Number и date_generated.

structure(list(Application.Number = c(80749L, 80749L, 80749L, 
80749L, 80749L, 80749L, 80749L, 80749L, 80749L), Decision = c("Invalid", 
"Invalid", "Invalid", "Invalid", "Invalid", "Invalid", "Approved", 
"Approved", "Approved"), date_generated = structure(c(1521810060, 
1521810060, 1523523840, 1523536500, 1524036720, 1524136380, 1524137460, 
1524137460, 1524137460), class = c("POSIXct", "POSIXt"), tzone = ""), 
    date_decided = structure(c(1522155960, 1522155660, 1523534400, 
    1523600520, 1524127140, 1524136740, 1524211800, 1524211740, 
    1524211200), class = c("POSIXct", "POSIXt"), tzone = ""), 
    time_to_decision = c(4.00347222222222, 4, 0.122222222222222, 
    0.740972222222222, 1.04652777777778, 0.00416666666666667, 
    0.860416666666667, 0.859722222222222, 0.853472222222222), 
    text = c("rIUQRmOkyZ", "ZxdYUr16NR", "8IIipoleOV", "nLuIgToxcT", 
    "xYFksrws87", "N2oECMtgQo", "RKcrBcBFI2", "jaH438byVt", "80ggA2hZr7"
    )), row.names = 15880:15888, class = "data.frame")

РЕДАКТИРОВАТЬ: решил, что выход должен быть только одна строка, и все строки должны вращаться вокруг Application.Number.

Я закончил тем, что создал отдельный фрейм данных с дубликатами и присоединил его к уникальным строкам.

Должен быть лучший способ сделать это.

1 Ответ

0 голосов
/ 02 ноября 2018

Ну, вы могли бы сделать это, но я согласен с пользователем 42-, это приведет к проблемам из-за формата данных позже:

> gather(x, "key", "val", -Application.Number, -Decision)
   Application.Number Decision              key                 val
1               80749  Invalid   date_generated          1521810060
2               80749  Invalid   date_generated          1521810060
3               80749  Invalid   date_generated          1523523840
4               80749  Invalid   date_generated          1523536500
5               80749  Invalid   date_generated          1524036720
6               80749  Invalid   date_generated          1524136380
7               80749 Approved   date_generated          1524137460
8               80749 Approved   date_generated          1524137460
9               80749 Approved   date_generated          1524137460
10              80749  Invalid     date_decided          1522155960
11              80749  Invalid     date_decided          1522155660
12              80749  Invalid     date_decided          1523534400
13              80749  Invalid     date_decided          1523600520
14              80749  Invalid     date_decided          1524127140
15              80749  Invalid     date_decided          1524136740
16              80749 Approved     date_decided          1524211800
17              80749 Approved     date_decided          1524211740
18              80749 Approved     date_decided          1524211200
19              80749  Invalid time_to_decision    4.00347222222222
20              80749  Invalid time_to_decision                   4
21              80749  Invalid time_to_decision   0.122222222222222
22              80749  Invalid time_to_decision   0.740972222222222
23              80749  Invalid time_to_decision    1.04652777777778
24              80749  Invalid time_to_decision 0.00416666666666667
25              80749 Approved time_to_decision   0.860416666666667
26              80749 Approved time_to_decision   0.859722222222222
27              80749 Approved time_to_decision   0.853472222222222
28              80749  Invalid             text          rIUQRmOkyZ
29              80749  Invalid             text          ZxdYUr16NR
30              80749  Invalid             text          8IIipoleOV
31              80749  Invalid             text          nLuIgToxcT
32              80749  Invalid             text          xYFksrws87
33              80749  Invalid             text          N2oECMtgQo
34              80749 Approved             text          RKcrBcBFI2
35              80749 Approved             text          jaH438byVt
36              80749 Approved             text          80ggA2hZr7
Warning:
attributes are not identical across measure variables;
they will be dropped 

Предупреждение уже является подсказкой: вы преобразовали все столбцы значений data_generated, date_decided, time_to_decision и text в наиболее общий формат данных, который может содержать все эти значения: символьные строки. Посмотрите, как ваши даты были преобразованы в секунд с начала эпохи : вы потеряли, например, информацию о часовом поясе.

Короче говоря, вы можете сделать это, но я не думаю, что вы должны. Поскольку вы не указали свой вариант использования или какой-либо контекст, я не могу предложить лучшего решения.,

...