在R中的一个序列(不同行)上,取id中日期之间的差异



对于每个id(cpf(,我希望以月为单位计算前一行的hire_date和sep_date之间的差异。例如,我想取与订单1关联的hire_date和与订单2关联的sep_date之间的差异(对于具有两个以上订单值的id也是如此(。

并非所有观测都只有两个阶值。有些人可能拥有更多。我怎样才能写一个代码来解释这一点?在这种情况下,一个id有两行以上。因此,我还需要做出不止一个区别。

我总是想在给定的hire_date(例如订单2(和之前的sep_date(订单1(之间取一个差值,依此类推。对于两行以上:hire_date(订单3(-sep_date(订单2(;日期(订单2(-日期(订单1(。。。

structure(list(cpf = c(234L, 234L, 245L, 245L, 245L, 555L, 555L
), hire_date = c("10-11-29", "13-7-29", "11-10-19", "13-3-20", 
"13-5-20", "10-02-18", "13-11-21"), sep_date = c("13-4-18", "13-8-29", 
"13-2-15", "13-4-20", NA, "13-10-20", NA), Order = c(1L, 2L, 
1L, 2L, 3L, 1L, 2L)), class = "data.frame", row.names = c(NA, 
-7L))
cpf hire_date sep_date Order
1 234  10-11-29  13-4-18     1
2 234   13-7-29  13-8-29     2
3 245  11-10-19  13-2-15     1
4 245   13-3-20  13-4-20     2
5 245   13-5-20     <NA>     3
6 555  10-02-18 13-10-20     1
7 555  13-11-21     <NA>     2

任何帮助都将不胜感激!

我们可以将日期列转换为Date类,并通过difftime进行分组

library(dplyr)
library(lubridate)
df1 %>%
mutate(across(hire_date:sep_date, dmy)) %>% 
group_by(cpf) %>% 
mutate(Month = as.numeric(difftime(hire_date, 
lag(sep_date), unit = "weeks"))/4) %>%
ungroup

相关内容

  • 没有找到相关文章

最新更新