要因の背後にある元の設計の根拠を覚えておくことは常に役立ちます。それらは、固定値のセットの1つを取ったカテゴリ変数のためのものでした。だから私はあることを少しあなたの例を変更想像:なぜ私たちが今まで「高」のcolor
をしたいと思うので
> d$color[is.na(d$color)] <- d$amount[is.na(d$color)]
Warning message:
In `[<-.factor`(`*tmp*`, is.na(d$color), value = c(3L, 1L, NA, NA, :
invalid factor level, NA generated
:
d <- data.frame(color = c("red", "blue", NA, NA, "green", "green"),
amount = c("high","low","low","mid","mid","high"))
> d
color amount
1 red high
2 blue low
3 <NA> low
4 <NA> mid
5 green mid
6 green high
は、今では完全に我々は次のことを実行したときにRは文句という理にかなっていますまたは "ミッド"?それは意味をなさない。ここでの精神的モデルは、2つの要素が実際には互いに関係しないか、そうであればレベルが同じでなければならないということです。だから、
levels(d$color) <- c(levels(d$color),"low","mid")
d$color[is.na(d$color)] <- d$amount[is.na(d$color)]
これは問題なく動作します:
> d
color amount
1 red high
2 blue low
3 low low
4 mid mid
5 green mid
6 green high
結果が意味的に無意味である場合でも。彼らは上がらないので」、
d <- data.frame(color = c("red", "blue", NA, NA, "green", "green"),
amount = c("high","low","low","mid","mid","high"),
stringsAsFactors = FALSE)
、その後、Rは、あなたが全くとNA
値を埋めるものを気にしないだろう。もちろん
、多くの人々はすべて、この因子レベルのジャグリングはうんざり見つけると、単純に行われているだろうこれ以上の要因はありません。
私の質問にお答えいただき、ありがとうございました。グーグルで「無効な要素レベル、NAが生成されました。」と試みましたが、何が起きているのか正直には分かりませんでした。多分私は寝るべきです。 –
@ HaddE.Nuff、ありがとう。それは非常に便利です! –