I am trying to replace multiple rows having NA values with adjacent observed rows by group in a dataframe of R.
The data looks like:
| id | a1 | a2 | a3 | a4 |
| ---|----|----|----|----|
| 1 | NA | NA | NA | NA |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 2 | 2 | 2 | 2 |
| 1 | NA | NA | NA | NA |
what I want to get is:
| id | a1 | a2 | a3 | a4 |
| ---|----|----|----|----|
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 2 | 2 | 2 | 2 |
| 1 | 2 | 2 | 2 | 2 |
by replacing NA rows with adjacent observations (rows above and below) by group.
I tried:
sapply(1:nrow(df), function(i){if(is.na(df[i,2:5])){df[i,2:5] <<- df[(i+1),2:5]}})
sapply(1:nrow(df), function(i){if(is.na(df[i,2:5])){df[i,2:5] <<- df[(i-1),2:5]}})
but I cannot replace it by group.
Can anyone help this?
Cheers,