我正在尝试编写一个代码,以获取同一行中两个日期的月份差。这样做的目的是获得一组结束日期与另一组开始日期之间的差额。
这是我的数据框:
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
答案 0 :(得分:4)
一种选择是将“日期”转换为Date
类,然后将“日期”的lead
创建为新列,并按“ ID”,“组”,{{ 1}},以从summarise
列中获取interval
和first
元素之间的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