替代case_when进行计算

时间:2018-12-17 19:03:01

标签: r dplyr

我正在寻找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_))

0 个答案:

没有答案