我有一个每周的时间序列数据,并转换为每月的序列,但是这里的问题是我需要将此数据与其他数据结合起来,这些数据也是一个月,但是具有他们的月份的最后日期
state_id county_id dt sales1 sales2
1 AWD 2018-01-06 50.1 43.4
1 AWD 2018-01-13 42.0 74.4
1 AWD 2018-01-20 21.0 32.1
1 AWD 2018-01-27 40.2 40.25
library(tidyverse)
library(lubridate)
final_monthly <- final %>%
group_by(month = round_date(dt, "monthly"), state_id,county_id) %>%
summarise_at(vars(starts_with('sales')), mean)
所需的输出
state_id county_id dt sales1 sales2
1 AWD 2018-01-31 38.325 47.53
这里日期是月份的最后一个值,但是我的代码给了我月份的第一个日期。我想得到一个月的最后一天
答案 0 :(得分:0)
您可以使用as.yearmon
中的zoo
。试试
library(tidyverse)
library(lubridate)
library(zoo)
final %>%
group_by(dt = as.Date(as.yearmon(dt), frac = 1), state_id,county_id) %>%
summarise_at(vars(starts_with('sales')), mean) %>%
select(colnames(final))
# output
# A tibble: 1 x 5
# Groups: dt, state_id [1]
state_id county_id dt sales1 sales2
<int> <chr> <date> <dbl> <dbl>
1 1 AWD 2018-01-31 38.325 47.5375
这里的提示是as.yearmon(final$dt)
给出了一个月向量[1] "janv. 2018" "janv. 2018" "janv. 2018" "janv. 2018"