Я новичок в R, и у меня возникли проблемы с генерацией фиктивной переменной путем оценки ряда условий.
Я пытаюсь создать фиктивную переменную 'GRDUMMY'. GRDUMMY должна принимать значение 1, если:
- SG_MA> SG_MA_Year_Avg & LIQ
В противном случае оно должно принимать значение 0.
Один сложный У меня проблема в том, что у меня отсутствуют значения как в SG_MA, так и в LIQ (хотя не в SG_MA_Year_Avg и LIQ_Year_Avg).
Чтобы сгенерировать фиктивную переменную и решить эти проблемы, я попробовал следующий код:
for(i in 1:nrow(Merge_GRDUMMY)){
if(is.na(Merge_GRDUMMY$SG_MA[i])){
Merge_GRDUMMY$GRDUMMY <- "NA"
}else if(is.na(Merge_GRDUMMY$LIQ[i])){
Merge_GRDUMMY$GRDUMMY <- "NA"
}else if(Merge_GRDUMMY$SG_MA[i] > Merge_GRDUMMY$SG_MA_Year_Avg[i] & Merge_GRDUMMY$LIQ[i] < Merge_GRDUMMY$LIQ_Year_avg[i]){
Merge_GRDUMMY$GRDUMMY <- 1
}else{
Merge_GRDUMMY$GRDUMMY <- 0}
}
Пример данных:
> dput(Merge_GRDUMMY[1:4, c(14, 16, 21, 22)])
structure(list(SG_MA = c(NA_real_, NA_real_, NA_real_, NA_real_
), LIQ = c(-0.166091210233936, -0.238975053258208, -0.0423391360788804,
-0.0255328112422608), SG_MA_Year_Avg = c(NaN, NaN, NaN, NaN),
LIQ_Year_avg = c(-0.0460118085010656, -0.0460118085010656,
-0.0460118085010656, -0.0460118085010656)), row.names = c(NA,
4L), class = "data.frame")
Моя проблема, похоже, вышеприведенный l oop выполняет все операторы и, таким образом, присваивает значение «0» всем наблюдениям, даже тем, которые имеют пропущенные значения. Любые советы о том, что я делаю не так?
Большое спасибо!