r - 从 yearmon 对象计算每月的第一天和最后一天
问题描述
我有一个简单的 df,在课堂上有一列日期yearmon
:
df <- structure(list(year_mon = structure(c(2015.58333333333, 2015.66666666667,
2015.75, 2015.83333333333, 2015.91666666667, 2016, 2016.08333333333,
2016.16666666667, 2016.25, 2016.33333333333), class = "yearmon")), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -10L))
我想要一种简单的方法,最好使用基数 R,lubridate
或xts
/zoo
来计算每个月的第一天和最后一天。
我见过其他可以做到这一点的软件包,但如果可能的话,我想坚持使用上述方法。
解决方案
使用base R,您可以将yearmon
对象转换为日期,使用as.Date
它将给您每月的第一天。对于最后一天,我们可以将日期增加一个月(1/12)并从中减去 1 天。
df$first_day <- as.Date(df$year_mon)
df$last_day <- as.Date(df$year_mon + 1/12) - 1
df
# year_mon first_day last_day
# <S3: yearmon> <date> <date>
# 1 Aug 2015 2015-08-01 2015-08-31
# 2 Sep 2015 2015-09-01 2015-09-30
# 3 Oct 2015 2015-10-01 2015-10-31
# 4 Nov 2015 2015-11-01 2015-11-30
# 5 Dec 2015 2015-12-01 2015-12-31
# 6 Jan 2016 2016-01-01 2016-01-31
# 7 Feb 2016 2016-02-01 2016-02-29
# 8 Mar 2016 2016-03-01 2016-03-31
# 9 Apr 2016 2016-04-01 2016-04-30
#10 May 2016 2016-05-01 2016-05-31
推荐阅读
- unity3d - UNITY : 无法取消订阅事件处理程序
- java - 使用 Firebase 属性从 Recyclerview 过滤元素
- c# - Unity 在编辑器中工作正常,但脚本没有在构建中开始
- java - 为什么我使用 Paper 库制作的“记住我”复选框无法正常工作?
- javascript - 如何在 discord.js 中标记播放器并接收他们的不和谐 ID
- python - 我应该如何处理包含大约 300000 个小数据表组的数据集?
- ssl - TLS 握手失败
- go - 列出模块的依赖项,而不是包
- android - 我的列表大小是整个屏幕,看不到下面的按钮或滚动
- python - 时间表不会显示