【R】2層グループのデータを図示したい
・お題:グループ、サブグループになっているデータを、箱ひげ図でうまいこと図示したい。
・遺伝子発現データなどでよく見かけるので、やってみる。
# ライブラリ読み込み
library(tidyverse)
library(magrittr)
# データセット作成
df <-
data.frame(
case_1.IDaaa = c(rnorm(10, 10, 1)),
case_1.IDbbb = c(rnorm(10, 11, 1)),
case_1.IDccc = c(rnorm(10, 12, 1)),
case_2.IDddd = c(rnorm(10, 13, 1)),
case_2.IDeee = c(rnorm(10, 14, 1)),
case_2.IDfff = c(rnorm(10, 15, 1)),
ctrl.IDggg = c(rnorm(10, 5, 1)),
ctrl.IDhhh = c(rnorm(10, 6, 1)),
ctrl.IDiii = c(rnorm(10, 7, 1))
)
df

# 縦持ちにして、groupとsubgroupを設定
df %<>% # 代入パイプ演算子
pivot_longer(cols = everything()) %>% # 縦持ち変換
mutate(
group = str_replace_all(name, pattern = "\\..*", replacement = "") # \\でエスケープ、\\.で.を表す。あとの.は任意の1文字。*は任意の回数前の文字繰り返し。
) %>%
mutate(
subgroup = str_replace_all(name, pattern = ".*\\.ID", replacement = "")
)
df

# オブジェクト作成
p <-
df %>%
ggplot(mapping = aes(x = subgroup, y = value))
# 描画
p +
geom_boxplot()+
facet_grid( ~ group, drop = TRUE, scales = "free_x") +
theme_bw() +
labs(title = "Taitoru", x = "ID", y = "Value") +
theme(
axis.text.x = element_text(angle = 90),
text = element_text(size = 15)
)

おわり