在R中使用tidyverse进行汇总后保留列

在R中使用tidyverse进行汇总后保留列,r,tidyverse,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[

我有一个数据集,它由具有年、月和日值的组组成。我想在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))

获取年份,但我想将正确的日期添加到月份和年份中。有人知道如何保持天数栏吗?我不想求平均值或最小值或任何东西。

我们可以使用
slice\u max
根据每个分组块的
max
值返回整行

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

谢谢我刚刚意识到,我也可以做
过滤(year==max(year))
而不是
总结
@user44796如果max year有联系,那就不同了。
过滤器
将获取所有重复的行,其中as
slice
只返回最早知道的行。我从未使用过
切片
函数。