Вот мои игрушечные данные и хочу вычислить diff_var4.
df <- tibble::tribble(
~var1, ~var2, ~var3, ~var4, ~diff_var4,
1L, 1L, 1L, 2L, NA,
1L, 1L, 1L, 2L, NA,
1L, 2L, 1L, 2L, 0L,
1L, 2L, 1L, 2L, 0L,
1L, 4L, 1L, 2L, 0L,
1L, 5L, 1L, 2L, 0L,
1L, 6L, 2L, 8L, 6L,
1L, 6L, 2L, 8L, 6L,
2L, 4L, 1L, 5L, NA,
2L, 5L, 1L, 5L, 0L,
2L, 5L, 1L, 5L, 0L,
2L, 6L, 2L, 8L, 3L,
2L, 6L, 2L, 8L, 3L)
вводятся переменные от var1 до var4, и мне нужно вычислить diff_var4 так, чтобы
условие 1 : для каждого var1, если var3 равно 1, а var2 равно min var2, тогда diff_var4 равен var4 - предыдущее (var4) для количества наблюдений, для которых var2 остается неизменным.
условие 2 : для каждого var1, если var3 изменяется, то diff_var4 равно var4- предыдущий (var4) для числа наблюдений, для которых var2 остается тем же.
Я начал с
df %>% group_by(var1) %>%
mutate(diff_var4 = var4-lag(var4))
, но не могу получить нужный diff_var4 с NA во 2-й строке6 в 8-м ряду и 3 в последнем!
Помогите, пожалуйста, рассчитать diff_var4, желательно с решением по тидиверсу.