根据r中两个开始日期之差添加一个新的结束日期列



我有一个由人和每个人的地址数据组成的数据框架。还有一个"STARTING_DATE"列,表示每个人何时开始在特定地址居住。有些人有多个地址,这意味着多个开始日期。我要做的是创建一个ending_date;列,该列计算两个开始日期之间的差值,并选择在新的开始日期之前的日期。

请参阅下面的示例(这是我想要的输出):

PersonID       Address                Starting_Date       Ending_Date
1              1st Residence           2010-02-05         
2              1st Residence           2012-05-18         2014-09-22
2              2nd Residence           2014-09-23
3              1st Residence           2014-04-10         2017-07-21
3              2nd Residence           2017-07-22

您可以在'Ending_Date'列中看到,对于人员2和人员3,它显示的日期比下一行的' starting_date '提前一天。价值。我已经使用了R中的lubridate包来计算答案,尽管我很遗憾没有得到我想要的答案。

library(lubridate)
library(tidyverse)
addr.data <- addr.data %>%
group_by(PersonID, Starting_Date) %>%
mutate(Ending_Date = max(Starting_Date) - days(1))

如果每个PersonID组有多个开始日期,这只是根据每个PersonID组返回最大日期之前的日期。我如何计算两个不同的开始日期之间的差异,并返回新的"Start_Date"列之前的日期?

非常感谢你的帮助。

您可以使用dplyr

addr.data %>% group_by(PersonID) %>%
mutate(Address = as.numeric(str_extract(Address, '^\d+')),
Ending_date = ifelse(Address == lag(Address)+1, lag(Ending_date) + 1, Ending_date))


相关内容

  • 没有找到相关文章

最新更新