Я следующие кадра данных:Заливка пропущенные даты в R
df <- structure(list(Jmbg = c("0402977385033", "0402977385033", "0402977385033",
"0402977385033", "0402977385033", "0402977385033", "0402977385033",
"0402977385033", "0402977385033", "0402977385033", "0402977385033",
"0402977385033", "0402977385033", "0402977385033", "0402977385033",
"0402977385033", "0402977385033", "0402977385033", "2607954335134",
"2607954335134", "2607954335134", "2607954335134", "2607954335134"
), DatumOd = structure(c(11260, 11457, 11503, 11603, 11696, 11826,
11875, 12013, 12043, 12133, 12225, 12225, 12317, 12408, 12499,
13878, 14425, 16203, 10915, 11687, 12372, 13878, 15217), class = "Date"),
DatumDo = structure(c(11455, 11502, 11520, 11695, 11800,
11941, 12012, 12042, 12132, 12224, 12225, 12316, 12407, 12498,
13877, NA, NA, NA, 11686, 12371, 13877, NA, NA), class = "Date")), row.names = c(NA,
-23L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), vars = list(
Jmbg), drop = TRUE, indices = list(0:17, 18:22), group_sizes = c(18L,
5L), biggest_group_size = 18L, .Names = c("Jmbg", "DatumOd",
"DatumDo"), labels = structure(list(Jmbg = c("0402977385033",
"2607954335134")), row.names = c(NA, -2L), class = "data.frame", vars = list(
Jmbg), drop = TRUE, indices = list(c(0L, 2L, 3L, 4L, 5L,
6L, 8L, 9L, 10L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 22L),
c(1L, 7L, 11L, 20L, 21L)), group_sizes = c(18L, 5L), biggest_group_size = 18L, .Names = "Jmbg"))
Первый столбец ID. Второй столбец - это дата начала события и третьего столбца, когда событие завершено. Как вы можете видеть, в столбце Datumdo
есть некоторые недостающие значения. Я хочу заполнить эти отсутствующие значения следующим образом: Если значение отсутствует, но дата DatumOd
является последней для id, она должна оставаться NA. Если дата отсутствует, и это не последняя дата DatumOd
, должна быть следующая дата от DatumOd
столбец минус один день.
Я попытался с dplyr
:
df_2 <- df %>%
dplyr::group_by(Jmbg) %>%
dplyr::mutate(novi_date = ifelse(is.na(DatumDo) & DatumOd != max(DatumOd), "test", DatumDo))
но вместо теста должна быть дата следующего из DatumOd
колонки для этого идентификатора. Например, для последнего «теста» должна быть дата 2011-08-30. Конечно, вы можете использовать любой другой пакет (data.table ...)
Что-то вроде этого? http://stackoverflow.com/a/16791674/322912 –
Я думаю, что это не та же проблема, потому что я должен использовать информацию из 2 столбцов не только так, как в примере, который вы связали. – Mislav
не может воспроизвести это на моей машине – shayaa