Вы получаете эту ошибку, потому что есть несколько строк с одинаковыми EventNumber
и EventCode
. При попытке преобразовать данные в широкоформатный формат reshape
не знает, как обрабатывать несколько значений, и использует его запасное решение, равное lenght
(т. Е. Считая, сколько элементов содержится в этой ячейке)
You необходимо решить, как вы хотите действовать в случае, когда в ячейке больше значения.
Вы можете преобразовать столбец EventDate
в формат даты и времени, чтобы можно было вычислить среднее значение. Или используйте только max
или min
.
Если вы хотите сохранить каждую дату в списке, я настоятельно рекомендую использовать функцию tidyr
s pivot_wider
:
FileNumber<-c("510708396","510708396","510708396","510708485","510667325")
EventCode<-c("CASCRT","DISCSENT","DISCSENT","CASCRT","DISCSENT")
EventDate<-c("8/21/2018 12:00:00 AM","12/3/2018 2:41:18 PM","12/3/2018 3:50:16 PM","8/23/2018 12:00:00 AM","12/12/2018 9:11:28 AM")
df<-data.frame(FileNumber,EventCode,EventDate)
library(dplyr)
library(tidyr)
df2 <- df %>%
pivot_wider(names_from = EventCode,
values_from = EventDate)
Это вызывает предупреждение, но помещает несколько элементов в список:
df2 теперь:
# A tibble: 3 x 3
FileNumber CASCRT DISCSENT
<fct> <list<fct>> <list<fct>>
1 510708396 [1] [2]
2 510708485 [1] [0]
3 510667325 [0] [1]
И мы можем получить доступ к элементам в списке:
df2$DISCSENT[1]
Возвращает:
list_of<factor<b7763>>[1]>
[[1]]
[1] 12/3/2018 2:41:18 PM 12/3/2018 3:50:16 PM
5 Levels: 12/12/2018 9:11:28 AM ... 8/23/2018 12:00:00 AM