R logo

Rで列を追加する時は、

dplyr::mutate()

を使っている。

mutate(列A+列B)

のように計算式の結果を入れられるので便利だけど、文字列を入れる時はこんな感じ ▼

例:Data というデータフレーム内で、

  • Age が "Young" or "Aged"
  • Sex が "Male" or "Female"

の分類を組み合わせて

  • Young_Male
  • Young_Female
  • Aged_Male
  • Aged_Female

という分類の、 "Group" という名前の列を作りたい場合。

Data <- Data %>%
mutate(Group = as.character(NA))
Data$Group[Data$Age=="Young" & Data$Sex=="Male"] <- "Young_Male"
Data$Group[Data$Age=="Young" & Data$Sex=="Female"] <- "Young_Female"
Data$Group[Data$Age=="Aged" & Data$Sex=="Male"] <- "Aged_Male"
Data$Group[Data$Age=="Aged" & Data$Sex=="Female"] <- "Aged_Female"

 

で、論理値、例えば、

  1. Young_Male
  2. Young_Female
  3. Aged_Male
  4. Aged_Female

というレベルを持った論理値を入れたい場合は、下記 ▼

Data <- Data %>%
mutate(Group = factor(NA, levels = c("Young_Male", "Young_Female", "Aged_Male", "Aged_Female")))
Data$Group[Data$Age=="Young" & Data$Sex=="Male"] <- "Young_Male"
Data$Group[Data$Age=="Young" & Data$Sex=="Female"] <- "Young_Female"
Data$Group[Data$Age=="Aged" & Data$Sex=="Male"] <- "Aged_Male"
Data$Group[Data$Age=="Aged" & Data$Sex=="Female"] <- "Aged_Female"