Когда столбец A равен NA, я хочу умножить значение в столбце B на значение непосредственно перед столбцом A. Я не знаю, как накапливать, когда NA непрерывны. Я хочу, чтобы результат выглядел как столбец C ниже.
dat <- data.frame(A=c(1, 1, NA, 1, NA, NA, NA, 1), B=c(1, 2, 2, 2, 2, 3, 4, 2))
> dat
A B
1 1 1
2 1 2
3 NA 2
4 1 2
5 NA 2
6 NA 3
7 NA 4
8 1 2
#-------------------------------------------
# C is NAs
result <-
dat %>%
mutate(C = ifelse(is.na(A), lag(A)*B, A))
> result
A B C
1 1 1 1
2 1 2 1
3 NA 2 2
4 1 2 1
5 NA 2 2
6 NA 3 NA
7 NA 4 NA
8 1 2 1
#-------------------------------------------
> result
A B C
1 1 1 1
2 1 2 1
3 NA 2 2
4 1 2 1
5 NA 2 2
6 NA 3 6
7 NA 4 24
8 1 2 1