【发布时间】:2017-12-24 09:13:16
【问题描述】:
我有一个data.table,如下所示:
ID start_date end_date
1 2015.01.01 2016.02.01
2 2015.06.01 2016.03.01
3 2016.01.01 2017.01.01
我想得到以下内容:
ID start_date end_date Months_passed
1 2015.01.01 2016.02.01 13
2 2015.06.01 2016.03.01 9
3 2016.01.01 2017.01.01 12
我正在尝试以下代码:
DT[, Months_passed:= length(seq(from = start_date, to = end_date, by='month')) - 1]
但是我得到了错误,那个
“seq.Date 中的错误(从 = start_date,to = end_date,by = “month”): 'from' 的长度必须为 1"
【问题讨论】:
-
你试过
difftime吗? -
可以,但是 difftime 的最大单位是“周”:/
-
所以除以 4...
-
或来自 lubridate 的
time_length(period,unit="months")? -
样本数据集中的所有
start_date和end_date都是第一天。个月。如果日期不是第一天,您如何计算月份?例如,2015-01-24 到 2015-02-07 期间可以算作 2 个月(1 月和 2 月)还是 0.5 个月(14 天)?
标签: r data.table datediff