いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】判定列を追加したい

・お題:表の情報を参照して、新たな列を作成したい。

 

・いくつかやってみる。とりあえず表を作成する。

> 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

 

 

おわり