我想创建比较分析物浓度的盒图,但将样本分组,这些样本来自哪个供体(从D1到D4),它们含有哪种病毒(VEH,丙型肝炎病毒或艾滋病病毒),以及它们是否与CO2 (+或- CO2)孵育,所有这些都可以通过样本名称来确定。例如,第一个样本D1VEH+CO2来自捐赠者1,带有病毒"VEH“(从技术上讲,它不是病毒,但这不是重点),并与CO2孵化。我不需要一次完成所有这些--我将创建一系列不同的箱图。我正在努力解决的问题是隔离映射中的不同组。例如,查看以下命令:
ggplot(data = df, mapping = aes(x = AnalyteSample, y = A)) + geom_boxplot()现在,这给了我所有样本的许多盒图。如果我只想要包含病毒HIV的样本的盒子图呢?如何在ggplot命令中过滤AnalyteSample列?
structure(list(AnalyteSample = c("D1VEH+CO2", "D1HCV+CO2", "D1VEH-CO2",
"D1HCV-CO2", "D2VEH+CO2", "D2HCV+CO2", "D2VEH-CO2", "D2HCV-CO2",
"D3VEH+CO2", "D3HCV+CO2", "D3VEH-CO2", "D3HCV-CO2", "D4VEH+CO2",
"D4VEH-CO2"), A = c("4190", "6665", "7435", "2052", "783", "322",
"199", "90", "46", "17", "8", "3", "3", NA), B = c("11569", "6677",
"3852", "983.88", "589", "359", "203", "68", "33", "12", "6",
NA, "4", NA), C = c("20453", "7699", "2499", "707.98", "412",
"328", "156", "88", "39", "27", "17", NA, NA, NA), D = c("7893",
NA, "1623", "685.64", "321", "644", "112", "65", "35", "29",
"9", "5", NA, NA), E = c("320", "15444", "2049", "1065", "389",
"365", "145", "77", "38", "16", "9", "6", NA, NA), F = c("7438",
NA, "3472", "1057", "563", "401", "167", "89", "46", "19", "6",
NA, NA, NA), G = c(7345, 9001, 2473, 1138, 516, 403, 134, 81,
37, 17, 8, 6, 4, 3), H = c("9004", "3998", "2299", "964.88",
"499", "341", "112", "88", "39", "32", NA, NA, NA, NA), I = c("8434",
"8700", "2217", "1263", "567", "352", "153", "80", "43", "18",
"9", "2", "3", NA), J = c("7734", "6733", "2092", "1115", "637",
"332", "155", "82", "37", "17", "10", "4", "1", NA), K = c(NA,
NA, "2118", "862.13", "426", "355", "143", "78", "44", "22",
"11", NA, NA, NA), L = c(6345, 7688, 2311, 1195, 647, 366, 177,
83, 41, 20, 8, 6, 3, 2), M = c("4222", NA, "1846", "814.61",
"422", "314", "154", "86", "41", "27", "21", NA, NA, NA), N = c("6773",
"8934", "2381", "1221", "677", "356", "146", "89", "40", "17",
"10", "5", "2", NA), O = c(NA, NA, NA, "564.5", "226", "476",
"111", "60", "32", "36", "18", NA, NA, NA)), row.names = c(NA,
-14L), class = "data.frame")发布于 2020-08-01 05:02:10
如果将AnalyteSample列划分到它的组成部分中,就会容易得多。(感谢Tjebo指出这比使用substring更好。)
library(ggplot2)
library(dplyr)
df %>% tidyr::separate(AnalyteSample, c("Donor", "Virus", "CO2"), c(2, 5)) %>%
ggplot(mapping = aes(x = Donor, y = as.numeric(A))) +
geom_boxplot() +
facet_grid(.~CO2)

df %>% tidyr::separate(AnalyteSample, c("Donor", "Virus", "CO2"), c(2, 5)) %>%
ggplot(mapping = aes(x = Donor, y = as.numeric(A))) +
geom_boxplot() +
facet_grid(.~Virus)

https://stackoverflow.com/questions/63198883
复制相似问题