・お題:表の情報を参照して、新たな列を作成したい。
・いくつかやってみる。とりあえず表を作成する。
> library(tidyverse)
>
> df <- data.frame("Sei" = rep(c("Suzuki", "Tanaka", "Sato"), times = 4),
+ "Mei" = rep(c("Taro", "Jiro", "Saburo", "Hanako"), times = 3),
+ "Score" = as.integer(rnorm(12, mean = 60, sd = 10)))
・2つの列の値を組み合わせてみる。
> df <- df %>%
+ mutate(., "Sei_Mei" = paste0(Sei, " ", Mei))
・ベクトルを辞書的に使って判定してみる。
> v1 <- c("Taro" = "Boy",
+ "Jiro" = "Boy",
+ "Saburo" = "Boy",
+ "Hanako" = "Girl")
> df$sex <- sapply(df$Mei, function(n){v1[which(names(v1) == n) ] } )
> df
・case_whenを使って、数値で判定する。
> df <- df %>%
+ mutate(Hantei = case_when(Score >= 70 ~ "good",
+ Score >60 ~ "soso",
+ Score > 50 ~ "not bad",
+ TRUE ~ "bad"))
> df
・せっかくなので、少し図示する。
> df$Hantei <- factor(df$Hantei, levels=c("good", "soso", "not bad", "bad"))
> p <-
+ ggplot(data = df, mapping = aes(x = Sei_Mei, y = Score, fill = Hantei)) +
+ geom_col()+
+ scale_fill_manual(values = c("lightgreen","lightblue", "yellow", "pink"))
> p
おわり