Я пытаюсь завершить dataframe, который имеет пробелы. Данные строятся ежечасно, и есть несколько переходов между часами. Это образец dataframe:Заполнить пробелы путем слияния с DataFrame, который является полным?
sms <- read.csv("hoursms2.csv", sep = ";", header = FALSE)
sms$date <- strptime(sms$date,"%d/%m/%Y %H:%M")
date count
2015-12-17 22:00:00 5
2015-12-18 09:00:00 7
2015-12-18 10:00:00 3
2015-12-18 12:00:00 6
То, что я пытался это создать еще одну dataframe которая колеблется от начала до конца первого dataframe, но со всеми часами и с уникальным идентификатором, чтобы сохранить трек из него:
hh <- seq(min(sms$date), max(sms$date), by="hour")
hh <- as.data.frame(hh)
hh <- cbind(hh,seq(1:3292)) #length of the hh data frame
что дает следующее:
date id
2015-12-04 12:00:00 1
2015-12-04 13:00:00 2
2015-12-04 14:00:00 3
2015-12-04 15:00:00 4
2015-12-04 16:00:00 5
до сих пор я попробовал эти три вещи, которые я нашел на StackOverflow, here, но они не работает в этом случае:
res <- merge(sms,hh,by = "date", all = TRUE)
res2 <- res[duplicated(res$date), ]
res3 <- res[!duplicated(res), ]
Первый вводе команды, разрешения, что делает это, чтобы дублировать все клетки, не сливаться его по дате, так что это дает следующее:
2015-12-23 19:00:00 5
2015-12-23 19:00:00 NA
Другой все испортит. Я думаю, что это имеет какое-то отношение к формату даты, который неправильно связан, но не уверен. Любое предложение о том, как заполнить по датам мой кадр данных, пожалуйста?
Одним из способов является использование 'left_join()' из пакета 'dplyr'. Вы делаете 'left_join (hh, sms)', и это должно дать вам то, что вы хотите, я думаю. – Gopala
@Gopala Просто попробовал и дал следующую ошибку: Присоединение: «date» Ошибка: не удается присоединиться к дате столбцов «x» date »: не удается присоединиться к« дате »x« дате »из-за несовместимых типов (POSIXct, POSIXt/POSIXlt, POSIXt) – adrian1121