R获得数据框中同一行上两个设置日期之间的差

时间:2019-07-17 14:54:43

标签: r lubridate

我正在尝试编写一个代码,以获取同一行中两个日期的月份差。这样做的目的是获得一组结束日期与另一组开始日期之间的差额。

这是我的数据框:

ID  Groups  Date
110     2   17/03/2012
110     2   29/03/2013
110     3   16/08/2013
110     3   05/02/2014
110     5   25/09/2014
110     5   26/11/2014

我想实现以下目标:

ID  Months
110     4       
110     7

1 个答案:

答案 0 :(得分:4)

一种选择是将“日期”转换为Date类,然后将“日期”的lead创建为新列,并按“ ID”,“组”,{{ 1}},以从summarise列中获取intervalfirst元素之间的last差异

lead

数据

library(dplyr)
library(lubridate)
df1 %>%
   mutate(Date =lead(dmy(Date))) %>% 
   group_by(ID, Groups) %>% 
   summarise(Date1 = first(Date), Date2 = last(Date)) %>%
   na.omit %>%
   transmute(Months = as.numeric(interval(Date1, Date2) %/% months(1)))
# A tibble: 2 x 2
# Groups:   ID [1]
#     ID Months
#  <int>  <dbl>
#1   110      4
#2   110      7