r - 在 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))
获取年份,但我想在月份和年份中添加正确的日期。有谁知道如何保留天数列?我不想平均或得到最小值或任何东西。
解决方案
我们可以使用根据每个分组块的“年份”值slice_max
返回整行max
library(dplyr)
dat %>%
group_by(group, month) %>%
slice_max(year)
推荐阅读
- spring-boot - 在 Spring Boot 中获取批处理作业的 Bean 创建异常
- mysql - UTF-8 CSV 导入时 utf8mb4 字符串无效?
- python - 从带有条件的熊猫系列中选择数据创建列表
- r - 为数据框列表中的每个数据框的每个列名称添加前缀 R
- python - python 从另一个文件夹的文件中导入类
- node.js - NodeJS + Socket.io:无法将数据发送到客户端创建的特定房间
- javascript - 我们如何在 React Native 中制作可选的 touchableOpectiy 或视图
- python - 查找列表列表的两个“列”的最小值
- android - Android -> 致命异常:android.database.sqlite.SQLiteDatabaseLockedException 数据库被锁定(代码 5)
- php - Laravel 社交名流未定义类型