Ggplot требует аккуратно отформатированных данных, также называемых длинным форматированным фреймом данных.Следующий пример сделает это.Но будьте осторожны, предоставленный набор данных имеет практически идентичное распределение значений по типу пациентов, поэтому при построении графиков пациентов с типом ALL и AML кривые перекрываются и вы не видите разницы.
library(tidyverse)
leukemia_big %>%
as_data_frame() %>% # Optional, makes df a tibble, which makes debugging easier
gather(key = patient, value = value, 1:72) %>% #transforms a wide df into a tidy or long df
mutate(type = gsub('[.].*$','', patient)) %>% #creates a variable with the type of patient
ggplot(aes(x = value, fill = type)) + geom_density(alpha = 0.5)
Во втором примере я добавлю 1 единицу к переменной значения для всех пациентов с ОМЛ, чтобы визуально продемонстрировать проблему перекрытия
leukemia_big %>%
as_data_frame() %>% # Optional, makes df a tibble, which makes debugging easier
gather(key = patient, value = value, 1:72) %>% #transforms a wide df into a tidy or long df
mutate(type = gsub('[.].*$','', patient)) %>% #creates a variable with the type of patient
mutate(value2 = if_else(condition = type == "ALL", true = value, false = value + 1)) %>% # Helps demonstrate the overlapping between both type of patients
ggplot(aes(x = value2, fill = type)) + geom_density(alpha = 0.5)`