Я работаю с:
- набор данных панели
- 10 периодов времени
Мне нужно создать фиктивную переменную RL
, которая равна 1 (TRUE)
навсегда, если фиктивная переменная RS
была 1
один раз.
другими словами:
Новая переменная RL
(охватывающая 10 периодов) должна быть 1
в t и всех последующих периодах, если RS
равнялась 1
в периоде t-1. Если TRUE
не произошло в RS
и RS
равно 0 (FALSE)
, тогда RL
также должно быть 0.
Как только TRUE
происходит в RS
в период t, тогда RL
должно быть 1
и далее (в t + 1, t + 2, t + 3, t + 4 ..., t + конец панели).
Моя проблема в том, что FALSE
не правильно читается как 0
, а как NA
.
Я использовал ifelse
, но это дает мне слишком много пробелов:
df$r_1RL <- rep(0,nrow(df)) # is = 0 cause noone can retire in t-1 since "RS0" doesn't exists
df$r_2RL <- ifelse( df$r_1RS == 1, 1, ifelse(df$r_1RS == 0, 0, NA))
df$r_3RL <- ifelse( (df$r_1RS == 1 | df$r_2RS == 1), 1, ifelse( (df$r_1RS == 0 | df$r_2RS == 0), 0, NA))
df$r_4RL <- ifelse( (df$r_1RS == 1 | df$r_2RS == 1 | df$r_3RS == 1), 1, ifelse( (df$r_1RS == 0 | df$r_2RS == 0 | df$r_3RS == 0), 0, NA))
df$r_5RL <- ifelse( (df$r_1RS == 1 | df$r_2RS == 1 | df$r_3RS == 1 | df$r_4RS == 1 ), 1, ifelse( (df$r_1RS == 0 | df$r_2RS == 0 | df$r_3RS == 0 | df$r_4RS == 0), 0, NA))
and so on... up to 10RL
df <- structure(list(r_1RS = c(FALSE, FALSE, FALSE, FALSE, FALSE, NA
), r_2RS = c(FALSE, NA, FALSE, FALSE, FALSE, NA), r_3RS = c(FALSE,
FALSE, FALSE, FALSE, FALSE, NA), r_4RS = c(FALSE, FALSE, FALSE,
FALSE, NA, FALSE), r_5RS = c(FALSE, TRUE, FALSE, FALSE, NA, FALSE
), r_6RS = c(FALSE, FALSE, FALSE, FALSE, NA, TRUE), r_7RS = c(FALSE,
FALSE, FALSE, FALSE, NA, FALSE), r_8RS = c(TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE), r_9RS = c(FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE), r_10RS = c(FALSE, FALSE, TRUE, FALSE, NA, FALSE), r_1RL = c(0,
0, 0, 0, 0, 0), r_2RL = c(0, 0, 0, 0, 0, NA), r_3RL = c(0, NA,
0, 0, 0, NA), r_4RL = c(0, NA, 0, 0, 0, NA), r_5RL = c(0, NA,
0, 0, NA, NA), r_6RL = c(0, 1, 0, 0, NA, NA), r_7RL = c(0, 1,
0, 0, NA, 1), r_8RL = c(0, 1, 0, 0, NA, 1), r_9RL = c(1, 1, 0,
0, NA, 1), r_10RL = c(1, 1, 0, 0, NA, 1)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
Здесь вы можете видеть, как только истина произойдет в RS
, RL
будет 1
после. Но есть две проблемы: во-первых, 1
в r_10RL должен быть NA
, а r_7RL должен иметь 0
и , а не NA's
красный кружок NA
должен быть 0, а желтый кружок 1
должен быть NA