【发布时间】:2018-08-15 07:21:45
【问题描述】:
案例:
给定的是一个数据框df,其中包括一个startDate 和一个endDate 列。我的目标是将df“转换”为一个新的数据框df_res,其中包含在间隔(startDate, endDate)中出现的每个月的一行,附加列year、month和numberOfDaysInMonth,所有类型诠释。
示例:
输入: df
id startDate endDate someOtherCol
1 2017-09-23 2018-02-01 val1
2 2018-01-01 2018-03-31 val2
... ... ... ...
期望的输出: df_res
id year month numberOfDaysInMonth someOtherCol
1 2017 9 8 val1
1 2017 10 31 val1
1 2017 11 30 val1
1 2017 12 31 val1
1 2018 1 31 val1
1 2018 2 1 val1
2 2018 1 31 val2
2 2018 2 28 val2
2 2018 3 31 val2
... ... ... ... ...
背景:
我对 R 比较陌生,但知道很棒的 dplyr 和 lubridate 包。我只是没有设法以一种简洁的方式实现上述目标,即使在使用这些软件包时也是如此。我得到的最接近的是:Expand rows by date range using start and end date,但这不会产生该范围内包含的每月天数。
非常感谢任何帮助。
【问题讨论】:
-
欢迎来到 SO!请阅读How to Ask!不要使用图片来展示你的数据,阅读stackoverflow.com/questions/5963269/…!
-
seq.Date可以通过month访问,请参阅?seq.Date。 -
您好@jogo,感谢您的回复。我已经重新格式化了数据框。这样可以吗?
-
谢谢@MichaelChirico。我检查了两个。我了解这些如何单独操作,但不知道如何应用它们以从
df到df_res。此外,后者查找给定月份中的天数,但我正在查找间隔(startDate, endDate)中包含的一个月中的天数(参见示例)。你知道该怎么做吗?