library(tidyverse)
library(forcats)
2 つの単純なデータフレーム (下部のコード) があり、「Animal」列を折りたたんで新しい再コード化された変数を作成したいと考えています。私は通常これを forcats::fct_collapse で行います。ただし、同じ変数を持つ多くの異なるデータフレームに fct_collapse を適用する関数を作成したいと考えています。たとえば、この場合、Df2 には「Rhino」がありません。
欠落している因子カテゴリが NA として返されるように (tiyverse を使用して) コードを変更する方法はありますか? この例では、それが「Rhino」であることはわかっていますが、実際のデータでは、他のレベルが欠落している可能性があります。forcats::fct_collapse 以外のオプションも受け入れますが、tidyverse の範囲内にとどまりたいと考えています。
REC <- function(Df, Data){
Df %>%
mutate(NEW = fct_collapse(Data, One = c("Cat","Dog","Snake"),
Two = c("Elephant","Bird","Rhino")))
}
REC(Df1,Animal) - this works
REC(DF2,Animal) - this doesn't, it throws an error because of "Rhino"
サンプルデータ:
Animal <- c("Cat","Dog","Snake","Elephant","Bird","Rhino")
Code <- c(101,222,434,545,444,665)
Animal2 <- c("Cat","Dog","Snake","Elephant","Bird")
Code2 <- c(101,222,434,545,444)
Df1 <- data_frame(Code, Animal)
Df2 <- data_frame(Code2, Animal2) %> %rename(Animal = Animal2)