-2

假设我的数据框DF有两个列$A$B. $A始终存在。$B当值丢失时,有时编码为 NaN。我想预测$B.predicted、 的缺失值$B,并创建一个新列$B.complete,如果$B.complete[i]是NaN,否则是。$B.predicted$B[i]$B[i]

我使用需要一个因子作为因变量的多项式来预测我有完整观察的B,使用:

DF$B.factor <- factor(DF$B)
model.results <- multinom(formula=B.factor ~ A,
                          data=DF[!is.na(DF$B),])
B.predicted <- predict(model.result, newdata=DF, type="class")

变量B.predicted是一个因素。

我的DF$B专栏不是一个因素。

Mu 的问题是如何合并DF$BB.predicted创建B.complete?特别是,既然B.predicted是一个因素而DF$B不是一个因素,那么这段代码是否选择了正确的值?

B.complete <- ifelse(is.na(DF$B), $B.predicted, DF$B)
4

1 回答 1

1

利用replace

set.seed(1)

DF <- data.frame(A = factor(sample(letters[1:5],30, TRUE)), 
 B = sample(c(letters[1:3],NA), 30 , TRUE, prob = rep(c(0.3,0.1),c(3,1))), 
 stringsAsFactors = F)

DF$B.factor <- factor(DF$B)

# no need to include is.na(DF$B) as multinom will omit anyway
model <- multinom(B.factor ~ A, data = DF)

# use replace to replace the NA values (converting to character when necessary)
DF$B.complete <- replace(DF$B, is.na(DF$B),  as.character(predict(model, newdata = DF[is.na(DF$B),])))
于 2013-01-10T02:54:38.323 回答