2017-09-21 5 views
0

私のカラムのいずれかの値の一部に新しい文字値を割り当てようとしたときに、このエラーが発生しました。警告メッセージ:無効な因子レベル、NAが生成されました

これは正常に動作します:

merge_output$extra_dod[merge_output$extra_dod=='Air Strip'] <-'strip' 

そしてそれは、このエラーメッセージを返します:

merge_output$extra_dod[merge_output$extra_dod == 'Refugees camps in forestreserve.'] <-'Refugees' 

が、これはそうではない私は、なぜ私ができるかわからない

Warning message: 
    In `[<-.factor`(`*tmp*`, merge_output$extra_dod == "Lime", value = c(5L, : 
    invalid factor level, NA generated 

を一部の値を置き換えますが、他の値は置き換えません。

+0

私たちが推測せずに答えることができるように、例を提示する必要があります。私はextra_dogが要因であると推測しています、そして、 'dd'はこの要素のレベルではありません。 – Visser

+0

をマージする場合は、追加する必要があります。これはうまくいきます:merge_output $ extra_dod [merge_output $ extra_dod == '森林の中の難民キャンプ。 ] < - '難民'でもmerge_output $ extra_dod [merge_output $ extra_dod == 'エアーストリップ'] < - 'ストリップ'は機能しません。 –

+1

'levels(merged_output $ extra_dod)'は何を返しますか? – Nate

答えて

2

ここでは同様に失敗大いに簡略化した例は次のとおり

f <- factor(c("a","b","c","d")) 
f[f=="d"] <- "e" 

警告メッセージ:[<-.factorで (*tmp*、== "D" は、F、値= "E"): すでに が存在する因子のレベルを交換してみてしまった場合、無効な因子レベル、NAは、

を生成し、それは動作します:

もっと
f[f=="c"] <- "b" 

いくつかの一般的なオプション:

  • が値を交換しようとする前に戻って文字ベクトル に変数を変換する(またはread.csv/read.tablestringsAsFactors=FALSEのようなものを使用)
  • 使用car::recode
関連する問題