首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用ggplot时过滤x值

在使用ggplot时过滤x值
EN

Stack Overflow用户
提问于 2020-08-01 04:46:05
回答 1查看 52关注 0票数 0

我想创建比较分析物浓度的盒图,但将样本分组,这些样本来自哪个供体(从D1到D4),它们含有哪种病毒(VEH,丙型肝炎病毒或艾滋病病毒),以及它们是否与CO2 (+或- CO2)孵育,所有这些都可以通过样本名称来确定。例如,第一个样本D1VEH+CO2来自捐赠者1,带有病毒"VEH“(从技术上讲,它不是病毒,但这不是重点),并与CO2孵化。我不需要一次完成所有这些--我将创建一系列不同的箱图。我正在努力解决的问题是隔离映射中的不同组。例如,查看以下命令:

代码语言:javascript
复制
ggplot(data = df, mapping = aes(x = AnalyteSample, y = A)) + geom_boxplot()

现在,这给了我所有样本的许多盒图。如果我只想要包含病毒HIV的样本的盒子图呢?如何在ggplot命令中过滤AnalyteSample列?

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 05:02:10

如果将AnalyteSample列划分到它的组成部分中,就会容易得多。(感谢Tjebo指出这比使用substring更好。)

代码语言:javascript
复制
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)

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63198883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档