R: совокупный итог на дневной уровень - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть следующий набор данных:

enter image description here

Я хочу измерить совокупный итог на дневном уровне.Таким образом, результат выглядит примерно так:

enter image description here

Я могу использовать функцию cumum dplyr, но подсчет «пропущенных дней» не будет отображаться.Например, дата 1/3/18 не существует в исходном кадре данных.Я хочу, чтобы эта пропущенная дата была в результирующем фрейме данных, и ее суммарная сумма должна совпадать с последней известной датой, т.е. 1/2/18 с суммой 5.

Любая помощь приветствуется!Я новичок в этом языке.

1 Ответ

0 голосов
/ 14 ноября 2018

Я буду использовать эту секунду data.frame, чтобы заполнить пропущенные даты:

daterange <- data.frame(Date = seq(min(x$Date), max(x$Date), by = "1 day"))

База R:

transform(merge(x, daterange, all = TRUE),
          Count = cumsum(ifelse(is.na(Count), 0, Count)))
#          Date Count
# 1  2018-01-01     2
# 2  2018-01-02     5
# 3  2018-01-03     5
# 4  2018-01-04     5
# 5  2018-01-05    10
# 6  2018-01-06    10
# 7  2018-01-07    10
# 8  2018-01-08    11
# ...
# 32 2018-02-01    17

dplyr

library(dplyr)
x %>%
  right_join(daterange) %>%
  mutate(Count = cumsum(if_else(is.na(Count), 0, Count)))

Данные:

x <- data.frame(Date = as.Date(c("1/1/18", "1/2/18", "1/5/18", "1/8/18", "2/1/18"), format="%m/%d/%y"),
                Count = c(2,3,5,1,6))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...