あるデータフレームに論理型(factor)の列を追加しようとして、下記のように作成した。
Data <- %>%
mutate(Group = factor(NA, levels = c("LBD-LATE(-)", "LBD-LATE(+)", "AD-LATE(-)", "AD-LATE(+)", "LBDAD-LATE(-)", "LBDAD-LATE(+)"))
そして、その列に下記のようにデータを追加しようとしたら、
Data1$Group[Data1$Cohort=="LBD"&Data1$LATE=="LATE(+)"] <- "LBD-LATE(+)"
Data1$Group[Data1$Cohort=="LBD"&Data1$LATE=="LATE(-)"] <- "LBD-LATE(-)"
Data1$Group[Data1$Cohort=="AD" &Data1$LATE=="LATE(+)"] <- "AD-LATE(+)"
Data1$Group[Data1$Cohort=="AD"&Data1$LATE=="LATE(-)"] <- "AD-LATE(-)"
Data1$Group[Data1$Cohort=="LBD+AD"&Data1$LATE=="LATE(+)"] <- "LBDAD-LATE(+)"
Data1$Group[Data1$Cohort=="LBD+AD" &Data1$LATE=="LATE(-)"] <- "LBDAD-LATE(-)"
下記エラーが出て、
invalid factor level, NA generated
すべて "NA" で返されてしまった……
調べると、ベクターやデータフレームで、もともと論理型(factor)として設定していない値を追加しようとすると、Rが混乱して、NAで返してくるよう。
How to handle the warning message invalid factor level, NA generated - 2 R programming examples - Deal with warnings in vector & data frame
その場合、一度文字型(character)に変換してから追加し、その後で論理型(factor)に戻すとよいそうなので、下記のように、前後にコードを追加。
Data$Group <- as.character(Data$Group)
Data1$Group[Data1$Cohort=="LBD"&Data1$LATE=="LATE(+)"] <- "LBD-LATE(+)"
Data1$Group[Data1$Cohort=="LBD"&Data1$LATE=="LATE(-)"] <- "LBD-LATE(-)"
Data1$Group[Data1$Cohort=="AD" &Data1$LATE=="LATE(+)"] <- "AD-LATE(+)"
Data1$Group[Data1$Cohort=="AD"&Data1$LATE=="LATE(-)"] <- "AD-LATE(-)"
Data1$Group[Data1$Cohort=="LBD+AD"&Data1$LATE=="LATE(+)"] <- "LBDAD-LATE(+)"
Data1$Group[Data1$Cohort=="LBD+AD" &Data1$LATE=="LATE(-)"] <- "LBDAD-LATE(-)"
Data1$Group <- factor(Data1$Group, levels = c("LBD-LATE(-)", "LBD-LATE(+)", "AD-LATE(-)", "AD-LATE(+)", "LBDAD-LATE(-)", "LBDAD-LATE(+)"))
・
・
・
無事解決♪