Following example data, two groups 1 and 2:
id <- c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2)
var <- c(NA, NA, 0, NA, NA, NA, NA, NA, 20, NA, NA)
df <- data.frame(id, var)
> df
id var
1 1 NA
2 1 NA
3 1 0
4 1 NA
5 1 NA
6 2 NA
7 2 NA
8 2 NA
9 2 20
10 2 NA
11 2 NA
How do i fill NA's upwards and downwards by group step by step with +1 and -1 for variable "var"? Creating a new variable "sol", the result should be:
id var sol
1 1 NA -1
2 1 NA -2
3 1 0 0
4 1 NA 1
5 1 NA 2
6 2 NA 17
7 2 NA 18
8 2 NA 19
9 2 20 20
10 2 NA 21
11 2 NA 22
Note: The values in the variable "var" can vary, they are not for every group the same.
I am grateful for any help. Especially with dplyr.