r-循环处理NA



我有一个循环,它正在检查每个Zipcode[I]是否等于Zipcode[j],其中Zipcode[j]的条目有一些NA。如果Zipcode[j]与urbanZips列表中的任何Zipcode匹配,我只需要Urban的伪变量取1。

我试过

for(i in 1:end){
for(j in 1:end_1){
if(urbanZips[i]==data_individual$Zipcode[j]) data_individual$Urban=1
}
}

我也试过

for(i in 1:end){
for(j in 1:end_1){
if(urbanZips[i]==data_individual$Zipcode[j]){
data_individual$Urban[j]=1
} else {
data_individual$Urban[j]=0
}
}
}

对于两者,我都得到了Error in if (urbanZips[i] == data_individual$Zipcode[j]) data_individual$Urban = 1: missing value where TRUE/FALSE needed

我知道有NA,但可能也有一些缺失的值。有近百万次观测。

我们可以在这里使用outer

m1 <- outer(urbanZips, data_individual$Zipcode, FUN = `==`)
+(colSums(m1, na.rm = TRUE) > 0)

我自己想好了,把它留在这里,以防其他人遇到这样的事情。

library(data.table)

setDT(data_individual)

data_individual <- data_individual[, Urban := as.numeric(Zipcode %in% urbanZips)]

最新更新