私はいくつかの動物の避難訓練データでいくつかのデータクリーニングの練習を続けています。ここでの目標は、品種カテゴリの数を減らすことです。R:ネストされたifelseステートメントと複数のパターンを改善する
部分パターンマッチoutgoing$Single.Breed
データフレームの列とそれぞれの品種カテゴリを使用しています。だから、品種がChihuahua
になる場合もありますが、Long Hair Chihuahua
でもかまいません。 (したがって、私の使用はgrepl
です。)したがって、品種カテゴリを含むものは、そのカテゴリによって異なる列に表されます。さらに、私はまた、コードを追加する必要があります。 ...コードの作成がさらに複雑になります。
以下のコードは、「解決策」ですが、非常に厄介です。これを達成するためのより良い、より滑らかな、より効率的な方法がありますか?
BreedCategories <- ifelse(outgoing$New.Type == "Dog",
ifelse(grepl("Chihuahua",outgoing$Single.Breed, ignore.case = TRUE), "Chihuahua",
ifelse(grepl("Pit Bull",outgoing$Single.Breed, ignore.case = TRUE), "Pit Bull",
ifelse(grepl("Terrier",outgoing$Single.Breed, ignore.case = TRUE), "Terrier",
ifelse(grepl("Shepherd",outgoing$Single.Breed, ignore.case = TRUE), "Shepherd",
ifelse(grepl("Poodle",outgoing$Single.Breed, ignore.case = TRUE), "Poodle",
ifelse(grepl("Labrador|Retriever",outgoing$Single.Breed, ignore.case = TRUE),"Labrador",
"Other")))))),"Cat")
あなたの質問が[再現可能](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)になるのに十分なデータを含める必要がありますが、チェックアウトしてください'dplyr :: case_when'。 – alistaire
品種名がリストされているかどうかを確認しようとしているなら、 'ifelse'は必要ありません。再現可能な例とあなたの望む出力は理想的でしょう – Nate