我有一个数据框架,每行都有开始日期和结束日期。我想计算这两个日期之间的天数,然后按年份分割。所以从这个开始:
id <- c(1,2,3)
start <- as.Date(c('01/01/2015','01/01/2016','07/01/2015'), format = '%m/%d/%Y')
end <- as.Date(c('12/31/2016','12/31/2016','12/31/2016'), format = '%m/%d/%Y')
df <- data.frame(id, start, end)
| id|开始|结束|
| - -----|- -----|- -----|
| 1| 2015年1月1日|2016年12月31日|
| 2| 2016年01月01日|2016年12月31日|
| 3| 2015年07月01日|2016年12月31日|
对此:
| id|开始|结束|天数_编号|2015年|2016年|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 1| 2015年1月1日|2016年12月31日|七百三十|三百六十五|三百六十五|
| 2| 2016年01月01日|2016年12月31日|三百六十五|0|三百六十五|
| 3| 07/01/2015| 2016年12月31日|五百四十八|一百八十三|三百六十五|
任何帮助是赞赏,请注意,我想计算每年的统计动态,我可能结束与许多年列在我的实际情况下...我猜润滑剂可能会有帮助,但我不确定从哪里开始。
2条答案
按热度按时间sauutmhj1#
这是一个基本的R选项
它给出了
hc2pp10m2#
下面是使用
tidyverse
和lubridate
的一种方法。首先,按日历年分隔行,用于测量每年的天数。每一行将包括每个日历年中要计算的日期,从1月1日开始,到12月31日结束,如果重叠多年。然后,很容易计算一年中的天数。
这个例子的结果与我的略有不同。2016年是闰年,有366天。如果天数不包括开始日期或结束日期,则会得到不同的答案。
编辑(6/8/23):根据以下评论,为包含日期添加1。这将给予闰年366天,如2016年,其他年份365天。
输出