我有一个数据框,每行都有开始日期和结束日期。我想计算两个日期之间的天数并按年份分割。
所以从这里开始:
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 |
Start |
End |
1 |
01/01/2015 |
12/31/2016 |
2 |
01/01/2016 |
12/31/2016 |
3 |
01/07/2015 |
12/31/2016 |
To this:
id |
Start |
End |
days_no. |
year_2015 |
year_2016 |
1 |
01/01/2015 |
12/31/2016 |
730 |
365 |
365 |
2 |
01/01/2016 |
12/31/2016 |
365 |
0 |
365 |
3 |
07/01/2015 |
12/31/2016 |
548 |
183 |
365 |
感谢任何帮助,请注意我想动态计算年度统计数据,在我的实际案例中我可能会得到很多年的列...我猜 lubridate 可能会有所帮助,但我不确定从哪里开始。
这是一个基本 R 选项
transform(
df,
days_no = end - start,
year_2015 = pmax(as.Date("2015-12-31") - start, 0),
year_2016 = pmax(end - as.Date("2016-1-1"), 0)
)
这使
id start end days_no year_2015 year_2016
1 1 2015-01-01 2016-12-31 730 days 364 days 365 days
2 2 2016-01-01 2016-12-31 365 days 0 days 365 days
3 3 2015-07-01 2016-12-31 549 days 183 days 365 days
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)