我正在寻找dplyr中的另一个选项,用于根据其他变量的值进行计算。
在这种特定情况下,我已根据每个观察值的个人ID和时间(ts)对数据框进行了排序。对于每个人,我想计算第一和第二,然后是第二和第三,等等的观察之间的时间差,如果观察发生在不同的日子,我想减去晚上的时间(nightLength) -本质上是在两次观察之间的最长天时间。
但是,当需要执行这些计算时,我需要一个选项来代替case_dppyr。
例如
df %>% arrange(ID, ts)
mutate(nightLength = 24 - difftime(sunset, sunrise, unit="hours"),
gap = case_when(ID == lag(ID) & day == lag(day) ~
difftime(ts, lag(ts), units="hours"),
ID == lag(ID) & day != lag(day) ~
difftime(ts, lag(ts), units="hours") - nightLength,
TRUE ~ NA_real_))