2016-06-08 4 views
-1

Привет У меня есть проблема в отношении вменения недостающих наблюдений в кадре данных с R, ниже, представляет собой снимок кадра данных:приписывать Недостающие дней в последовательности день в R

образец кадра данных

enter image description here

Я на самом деле есть 66 различных районов, 21 дней, и каждый день, и каждый район должен иметь 144 периодов времени. Текущий набор данных, который у меня есть, - с отсутствующими наблюдениями, например, для района 5 на 6-й день, значения наблюдения за период времени 132 отсутствуют. То, что я пытаюсь достичь, - включить отсутствующие наблюдения в исходный фрейм данных, чтобы завершить его, но для значений y1 и y2 я могу просто установить их в null. Может ли кто-нибудь дать мне несколько советов, чтобы достичь этого с помощью R? Спасибо Felix

+0

У вас есть пропущенные значения? Если да, то в каком формате? –

+0

Поместите некоторый минимальный примерный кадр данных R с тем, как ваши данные и как вы хотите. Не так сложно составить пример данных. Это поможет нам написать код, который работает для вашего дела. – Gopala

+0

Возможный дубликат [как вставить отсутствующие наблюдения в кадр данных] (http://stackoverflow.com/questions/33003819/how-to-insert-missing-observations-on-a-data-frame) –

ответ

0

Вы не представили воспроизводимый пример, так что вот некоторые основные рекомендации.

Сначала добавьте строки для отсутствующих значений. Предположим, что ваш фрейм данных называется mydata и имеет столбцы District, DayOfMonth и TimePeriod (плюс y1, y2 и т. Д.), Но с некоторыми комбинациями этих значений отсутствует. Давайте добавим в те недостающие комбинации:

library(dplyr) 

df = expand.grid(District=1:66, DayOfMonth=1:21, TimePeriod=1:144) %>% 
    left_join(mydata) 

Теперь у вас есть кадр данных со всеми вашими исходными данными, плюс новые строки с ранее отсутствовавших комбинаций District, DayOfMonth и TimePeriod, которые заполнены NA в y1, y2 и т. д. столбцы данных. Для вменения этих недостающих значений см., Например, mi package и mice package.

+0

Спасибо, что так много eipi10, который работал как волшебство! –

0

Вот еще один вариант с expand и fill от tidyr

library(dplyr) 
library(tidyr) 
expand(District = 1:66, DayOfMonth = 1:12, TimePeriod = 1:144) %>% 
      left_join(mydata) %>% 
      fill(., District, DayOfMonth, TimePeriod) 
+0

HI akrun, большое вам спасибо за ваш быстрый ответ. Я попытался с вашим кодом, но получил предупреждение, в котором говорится: «отсутствует аргумент данных, по умолчанию недоступен». Как я могу это исправить? –

Смежные вопросы