通过获取R

时间:2019-01-31 18:47:01

标签: r time-series

我有一个每周的时间序列数据,并转换为每月的序列,但是这里的问题是我需要将此数据与其他数据结合起来,这些数据也是一个月,但是具有他们的月份的最后日期

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

这里日期是月份的最后一个值,但是我的代码给了我月份的第一个日期。我想得到一个月的最后一天

1 个答案:

答案 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"