Я пытаюсь получить сумму всех значений за месяц для каждого года раздельно, что означает, что каждый день месяца получает сумму в ежемесячную сводку, то есть со следующими данными
Date Value
<dttm> <dbl>
1 2016-07-04 00:00:00 -9
2 2018-10-05 00:00:00 31.3
3 2018-04-10 00:00:00 -3
4 2016-09-02 00:00:00 -56
5 2017-01-02 00:00:00 -6
6 2018-02-01 00:00:00 -39
7 2015-07-24 00:00:00 -14.5
8 2017-06-08 00:00:00 -16
9 2017-01-04 00:00:00 500
10 2015-11-03 00:00:00 -2.46
Я хотел бы получить что-то вроде строк (не фактических значений):
Date Value
<dttm> <dbl>
1 August - 2017 -9
2 September - 2017 31.3
3 October - 2017 -3
Я попытался запустить следующие команды
group_by(td %>%
mutate(year = lubridate::year(Date)),
year) %>%
aggregate(.$Value,
by = list(date = lubridate::month(.$Date)),
FUN = sum)
безуспешно, компилятор отправляет эту ошибку:
Error in Summary.POSIXct(c(1517184000, 1517184000, 1517184000, 1516924800, :
'sum' non défini pour des objets "POSIXt"
Я также пробовал вариации этих потоков: 1, 2 и тот из третьего сообщения; каждый не дал результатов, которых я ожидал. Есть идеи по поводу решения?
Данные в формате dput ().
td <-
structure(list(Date = structure(c(1467590400, 1538697600, 1523318400,
1472774400, 1483315200, 1517443200, 1437696000, 1496880000, 1483488000,
1446508800), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
Value = c(-9, 31.3, -3, -56, -6, -39, -14.5, -16, 500, -2.46
)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8",
"9", "10"), class = "data.frame")
Большое спасибо за ответ @RuiBarradas! Однако у меня проблемы с тем, чтобы ваше решение работало! Простая проблема с пространством имен Error in loadNamespace(name) : no package zoo found
, есть ли какие-либо комментарии по этому поводу? Мне трудно понять, как эта команда будет знать, как агрегировать за месяц а также год ...
aggregate(Value ~ zoo::as.yearmon(Date), td, sum)
.