r与首个日期的日期差异

问题描述 投票:0回答:1

我有一个看起来像这样的数据集。

   Id      Date1        Cars
   1       2007-04-05   72
   2       2014-01-07   12
   2       2018-07-09   10
   2       2018-07-09   13 
   3       2005-11-19   22
   3       2005-11-23   13 
   4       2010-06-17   38
   4       2010-09-23   57 
   4       2010-09-23   41
   4       2010-10-04   17

我想为每个ID获得相对于该ID的第一个日期(最早)日期的日期差。对于每个ID,(最早日期-第2个最早日期),(最早日期-第3个最早日期),(最早日期-第4个最早日期)...等等。

我最终会得到像这样的数据集

   Id      Date1        Cars   Diff
   1       2007-04-05   72     NA
   2       2014-01-07   12     NA 
   2       2018-07-09   10     1644 = (2018-07-09 - 2014-01-07)
   2       2018-07-09   13     1644 = (2018-07-09 - 2014-01-07) 
   3       2005-11-19   22     NA
   3       2005-11-23   13     4    = (2005-11-23 - 2005-11-19)
   4       2010-06-17   38     NA
   4       2010-09-23   57     98   = (2010-09-23 - 2010-06-17)
   4       2010-09-23   41     98   = (2010-09-23 - 2010-06-17)
   4       2010-10-04   17     109  = (2010-10-04 - 2010-09-23)

我不清楚如何做到这一点。任何帮助将非常感激。谢谢

r dplyr data-manipulation datediff date-difference
1个回答
0
投票

您可以在每个Id中减去第一个值。

library(dplyr)
df %>%
  mutate(Date1 = as.Date(Date1)) %>%
  group_by(Id) %>%
  mutate(Diff = as.integer(Date1 - first(Date1)))
© www.soinside.com 2019 - 2024. All rights reserved.