我想使用ifelse和is.na创建一个新变量。 但问题是这个ifelse只返回1和NA。 问题似乎是我的第一个问题,因为我一个接一个地跑进ifelse,只有第一个返回NA。我无法理解为什么,因为3 ifelse的代码似乎是相似的。有谁知道吗?
eassociacao<-ifelse((!is.na(dados$CENTRAL)|dados$CENTRAL!=" ") &
(!is.na(dados$SISTEMA)|dados$SISTEMA!=" "),1,
ifelse((!is.na(dados$CENTRAL)|dados$CENTRAL!=" ") &
(is.na(dados$SISTEMA)|dados$SISTEMA==" "),2,3))
答案 0 :(得分:2)
有3个非常好的理由不使用嵌套的ifelse:
以下是一个例子:
eassociacao <- rep(NA_integer_, nrow(dados) # initialize
c1 <- !is.na(dados$CENTRAL) & dados$CENTRAL!=" " # condition 1
c2 <- (!is.na(dados$SISTEMA) & dados$SISTEMA!=" ") # condition 2
c3 <- (is.na(dados$SISTEMA) & dados$SISTEMA==" ") # condition 3
eassociacao[c1 & c2] <- 1 # Push 1 where c1 and c2 are TRUE
eassociacao[c1 & c3] <- 2 # Push 2 where c1 and c3 are TRUE
eassociacao[c1 & !c3] <- 3 # Push 3 where c1 and not c3 are TRUE
您可能需要拆分条件才能获得实际需要的内容。但请相信我,当我说这种方法将节省你的时间,$和frsutration。