我有一个数据集
df <- data.frame(ID=c(1, 2, 3, 4, 5, 6),
type=c('type1','type2','type1','type1','type2', 'type3'),
date=c('01/01/2014','01/06/2015','01/06/2015','07/04/2017','05/10/2018', '05/01/2026'))
我想计算属于同一组的 ID 的日期之间的天数
结果将类似于以下数据框中变量 days_in_ Between 中的值
data.frame(ID=c(1, 2, 3, 4, 5, 6),
type=c('type1','type1','type1','type2', 'type2','type3'),
date=c('01/01/2014','01/06/2015','07/04/2017', '01/06/2017','05/10/2018', '05/01/2026'),
days_in_between = c(NA, 370, 910, NA, 489, NA))
我已经尝试过这个方法,有效
df%>%group_by(type)%>%mutate(diff=date-lag(date))
但它有点慢,因为我有一个非常大的数据集。只是想知道是否有更快的选择?
我会先将它们分成两个数据框,只是为了操作时清晰起见
也只是确保数据是日期类型
希望这能回答问题!
df <- data.frame(ID=c(1, 2, 3, 4, 5, 6),
type=c('type1','type2','type1','type1','type2', 'type3'),
date=c('01/01/2014','01/06/2015','01/06/2015','07/04/2017','05/10/2018', '05/01/2026'))
df$date <- dmy(df$date)
df1 <- df %>%
filter(type == 'type1') %>%
mutate(diff = date - lag(date))
df2 <- df %>%
filter(type == 'type2') %>%
mutate(diff = date - lag(date))
combined_df <- bind_rows(df1, df2)