首页 > 解决方案 > 在 R 中使用 tidyverse 进行汇总后保留列

问题描述

我有一个数据集,它由具有年、月和日值的组组成。我想在 R 中使用 tidyverse 过滤组,以便找到时间序列中的最新月份。这是一些示例代码。

dat = expand.grid(group = seq(1,5),year = seq(2016,2020),month=seq(1:12))
dat = dat[order(dat$group,dat$year,dat$month),]
dat$days=sample(seq(0,30),nrow(dat),replace=TRUE)
dat$year[dat$year==2020 & dat$month==12] = NA
dat = dat[complete.cases(dat),]

在此示例中,有 5 个组具有 2016 年至 2020 年的月度数据。但是,我们假设 12 月组缺失。此外,数据集中缺少某些日期

我可以从 2019 年开始抓取 12 月,但不确定如何在摘要中包含天数并按月天数进行过滤。例如,

a = dat %>%
  group_by(group,month) %>%
  summarise(year = max(year))

获取年份,但我想在月份和年份中添加正确的日期。有谁知道如何保留天数列?我不想平均或得到最小值或任何东西。

标签: rtidyverse

解决方案


我们可以使用根据每个分组块的“年份”值slice_max返回整行max

library(dplyr)
dat %>%
  group_by(group, month) %>%
  slice_max(year)

推荐阅读