Я пытаюсь определить начало интервала на основе известного end_time
этого интервала в R
, используя dplyr::mutate()
с оператором ifelse()
.
Я могу определить start_time
для первого интервала легко использовать минимальное значение времени, но я застреваю с другими временами запуска.Я попытался ранжировать их, используя dense_rank()
, но я не знаю правильный синтаксис для извлечения end_time
для предыдущего значения ranked
.start_time
для ranked > 1
должно равняться end_time + 1
для предыдущего значения ranked
.
library(dplyr)
blks <- data.frame(Group = c(rep("A", 3), rep("B", 4)),
end_time = c(4, 8, 20, 5, 11, 15, 20))
expand.grid(time = 0:20,
Group = c("A","B")) %>%
left_join(mutate(blks, time = end_time), by = c("Group", "time")) %>%
group_by(Group) %>%
mutate(ranked = dense_rank(end_time),
start_time = ifelse(ranked == 1, min(time), "WHERE I NEED HELP"))
# else = the end_time from the previous ranked + 1
# end_time[ranked == ranked-1] + 1))
Желаемый результат:
mutate(blks, start_time = c(0, 5, 9, 0, 6, 12, 16))