Привет, ребята. У меня есть этот Dataframe в R:
m2 <- c(22,NA,0,NA,42,NA)
m3 <- c(89,38,0,67,0,NA)
df = data.frame(m2,m3)
Я хочу вычислить доходность между м3 и м2.Форма имеет вид: return = (m2 [i] - m3 [i]) / m3 [i].Условия для вычисления:
- , если m2 [i] = NA или m3 [i] = NA, тогда результат = NA
- , если m2 [i] = 0 и m3 [i] = 0, тогда результат = -9999
- , если m2 [i]! = 0 и m3 [i] = 0, то результат = 9999
До сих пор я пробовал этикод:
for (i in nrow(df)){
if (is.na(df[['m2']][i]) == TRUE | is.na(df[['m3']][i]) == TRUE){df[['result']][i] = NA}
if (df[['m2']][i] == 0 & df[['m3']][i] == 0) {df[['result']][i] = 9999}
if (df[['m3']][i] == 0 | df[['m2']][i] != 0) {df[['result']][i] = -9999}
else {df[['result']][i] = (df[['m2']][i] - df[['m3']][i])/df[['m3']][i]}
}
Но возвращается, как показано ниже:
Error in if (df[["m2"]][i] == 0 & df[["m3"]][i] == 0) { :
missing value where TRUE/FALSE need
Я попробовал тот же метод для Python, и он работает.Есть ли способ сделать это в R, и я должен рассчитать возврат без использования цикла for?