Я работаю с набором данных стран с разными значениями для разных моментов времени. Каждый месяц проводится одно наблюдение, поэтому я использовал функцию as.date так, чтобы даты были 01-07-2018, 01-08-2018 и т. Д.
Для каждой страны и каждой даты существуют соответствующие значения.
Я хочу преобразовать это в фрейм данных, где все значения стран агрегированы на дату.
Я попытался изменить функцию так, чтобы
reshape(Origin_wide, idvar = "Origin", timevar = "V5", direction = "wide")
V5 - переменная даты, а Origin - страна.
Это, насколько я могу судить, удаление набора as.date, чтобы даты и соответствующие значения больше не обрабатывались как таковые.
Можно ли сделать это более плавно? Временной ряд данных ряда данных исчезает из-за потери функции изменения формы, так что я не могу различить временной ряд или построить его по дате и т. Д.
Кроме того, даты получают префикс «value», что является той же проблемой, насколько я могу судить.
Вот такая структура данных:
| V5 | Origin | Value |
|---------------------|------------------|----------|
| 01-09-2017 | USA | 45 |
|---------------------|------------------|----------|
| 01-10-2017 | USA | 47 |
|---------------------|------------------|----------|
| 01-11-2017 | USA | 49 |
|---------------------|------------------|----------|
| 01-09-2017 | Canada | 7 |
|---------------------|------------------|----------|
| 01-10-2017 | Canada | 13 |
|---------------------|------------------|----------|
| 01-11-2017 | Canada | 17 |
|---------------------|------------------|----------|
А вот как бы я хотел, чтобы это выглядело:
| V5 | Canada | USA |
|---------------------|------------------|----------|
| 01-09-2017 | 7 | 45 |
|---------------------|------------------|----------|
| 01-10-2017 | 13 | 47 |
|---------------------|------------------|----------|
| 01-11-2017 | 17 | 49 |
|---------------------|------------------|----------|
Надеюсь, это имеет смысл.
Чтобы воспроизвести случайную небольшую версию данных:
set.seed(1)
Data <- data.frame(Value = sample(1:10), Origin = sample(c("Mexico", "USA","Canada"), 10, replace = TRUE))
dates <- sample(seq(as.Date('2018/01/01'), as.Date('2018/05/01'), by="month"), 10, replace = TRUE)
Data <- cbind(dates,Data)
Просмотр данных, полученных с помощью кода
Как ясно здесь, значения определены не для всех дат. В этом случае значение для этой даты = 0. Так что в моей первой попытке с изменением формы он выдает NA для всех дат, где нет наблюдений, что было идеально, потому что я мог просто вставить 0.