r - 是否有按月拆分数据的 R 函数?
问题描述
我有以下格式的数据:
content, date
Hello, 2019-05-11T23:59:02+00:00
Amazing, 2019-01-08T20:22:02+00:00
Come on, 2018-11-15T10:52:45+00:00
We won, 2018-08-25T16:33:23+00:00
这只是数据的一个样本,而我在 2018 年 8 月到 2019 年 5 月之间有超过 100 万行带有“日期”的行。我想将我的数据分成 10 个不同的数据框,每个数据框代表一个特定的月份(即1 = 2018 年 8 月,2 = 2018 年 9 月,...,10 = 2019 年 5 月)。
我尝试使用 dplyr group-by 方法并执行循环,但没有发现任何成功。我也尝试了其他帖子的代码,但无济于事。
任何帮助深表感谢。我是 Stack Overflow 的新手,如果我没有遵守任何形式的行为准则,我深表歉意。先感谢您!
解决方案
该Lubridate
软件包具有满足您需求的功能。这里的关键是制作它们Dates
(或POSIX
)。
require(tidyverse)
require(lubridate)
df <- data.frame(content=c('H','A'),
date=c('2019-05-11T23:59:02+00:00', '2019-01-08T20:22:02+00:00'))
df %<>%
mutate(date=ymd_hms(date)) %>%
mutate(monthGroup=floor_date(date, unit='month'))
您可以使用该信息手动过滤每个月,也可以将其放入循环/应用中以使计算机执行此操作。
df %>%
filter(monthGroup==ymd('2019-05-01'))
另一种不使用的方法floor_date()
df <- data.frame(content=c('H','A'),
date=c('2019-05-11T23:59:02+00:00', '2019-01-08T20:22:02+00:00'))
获取 2019 年 4 月的所有日期;即 2019 年 5 月 1 日之前和 2019 年 4 月 1 日之后的日期。
df %>%
mutate(date=ymd_hms(date)) %>%
filter(date<ymd('2019-05-01') &
date>=ymd('2019-04-01'))
推荐阅读
- visual-studio-code - 当我想跳转到定义时,VS Code 显示(查看)多个定义
- google-apps-script - 启动时从谷歌表加载数据
- oracle - Maven OSB (12.2.1.3) 问题
- typescript - 环回 4 - ER_BAD_FIELD_ERROR
- amazon-ec2 - 如何使用 PHP 7.2.13 在 Amazon Linux 上安装 Imap
- perl - Perl 中的 $x -> {_foo} -> {_bar} 是什么意思?
- python-3.x - 需要在 Pandas 中绘制直方图,使得 x 轴是分类的,y 轴是某些列的总和
- java - 这是将列表添加到另一个列表的好方法吗,如果源列表中没有值,则填充默认值
- javascript - Angular 7数组更改值
- python - 如何检测键盘输入以使用 python 播放声音?