-2

私のデータフレームDFに2つの列$Aとが含まれているとし$Bます。$A常に存在します。$B値が欠落している場合、NaNとコード化されることがあります。$B.predicted、の欠落値を予測し、 ifがNaNで、それ以外の場合のよう$Bな新しい列を作成したいと思います。$B.complete$B.complete[i]$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 に答える