首页 > 解决方案 > 需要帮助根据列值对数据进行子集化

问题描述

OD 图示例

让我先说我是 R 新手并且编码经验有限。我有一个包含 4 个不同变量的 data.frame,其中三个是因子(复制、稀释和小时数)。我的最后一个变量是我需要作为数值的光密度。

我希望根据小时数绘制不同稀释度的光密度差异(想想基于稀释度的正负值条形图)。对我来说真正的问题是我不知道如何根据小时来分离我的数据,所以我可以找到它们之间的密度差异。我觉得这是一项简单的任务,但我所看到的所有地方都让我走错了路。

   Replicate pf_dilution hours    OD
1          1           0     0 0.050
2          2           0     0 0.045
3          3           0     0 0.061
4          1          10     0 0.155
5          2          10     0 0.138
6          3          10     0 0.135

再往下看,小时数是 24 小时,之后是 48 小时。

标签: rdataframegraphgraphing

解决方案


绘制数据集

df %>%
  group_by(hours) %>%
  ggplot(aes(x = pf_dilution, y = OD)) +
  geom_col(aes(fill = hours), position = position_dodge()) +
  labs(title = "Optical Density of C. elegans against P. fluorescens ",
       x = "PF Concentration [uL]",
       y = "OD") +
  scale_x_continuous(breaks = seq(0, 100, 10)) +
  scale_fill_discrete(name = "Hours")

在此处输入图像描述

数据

df <- read.table(text = "
   Replicate pf_dilution hours OD
   1 0 0 0.05 
   2 0 0 0.045 
   3 0 0 0.061 
   1 10 0 0.155 
   2 10 0 0.138 
   3 10 0 0.135 
   1 20 0 0.234 
   2 20 0 0.212 
   3 20 0 0.23 
   1 30 0 0.31 
   2 30 0 0.278 
   3 30 0 0.279 
   1 40 0 0.372 
   2 40 0 0.392 
   3 40 0 0.367 
   1 50 0 0.426 
   2 50 0 0.464 
   3 50 0 0.443 
   1 60 0 0.524 
   2 60 0 0.546 
   3 60 0 0.544 
   1 70 0 0.624 
   2 70 0 0.587 
   3 70 0 0.55 
   1 80 0 0.638 
   2 80 0 0.658 
   3 80 0 0.658 
   1 90 0 0.721 
   2 90 0 0.711 
   3 90 0 0.711 
   1 100 0 0.791 
   2 100 0 0.791 
   3 100 0 0.784 
   1 0 24 0.059 
   2 0 24 0.065 
   3 0 24 0.063 
   1 10 24 0.132 
   2 10 24 0.106 
   3 10 24 0.108 
   1 20 24 0.186 
   2 20 24 0.158 
   3 20 24 0.184 
   1 30 24 0.235 
   2 30 24 0.206 
   3 30 24 0.191 
   1 40 24 0.263 
   2 40 24 0.296 
   3 40 24 0.255 
   1 50 24 0.304 
   2 50 24 0.333 
   3 50 24 0.329 
   1 60 24 0.358 
   2 60 24 0.414 
   3 60 24 0.414 
   1 70 24 0.512 
   2 70 24 0.438 
   3 70 24 0.438 
   1 80 24 0.509 
   2 80 24 0.487 
   3 80 24 0.481 
   1 90 24 0.573 
   2 90 24 0.528 
   3 90 24 0.525 
   1 100 24 0.633 
   2 100 24 0.602 
   3 100 24 0.607 
   1 0 48 0.473 
   2 0 48 0.392 
   3 0 48 0.486 
   1 10 48 0.473 
   2 10 48 0.473 
   3 10 48 0.491 
   1 20 48 0.466 
   2 20 48 0.437 
   3 20 48 0.487 
   1 30 48 0.469 
   2 30 48 0.435 
   3 30 48 0.424 
   1 40 48 0.431 
   2 40 48 0.439 
   3 40 48 0.414 
   1 50 48 0.42 
   2 50 48 0.423 
   3 50 48 0.402 
   1 60 48 0.42 
   2 60 48 0.523 
   3 60 48 0.53 
   1 70 48 0.531 
   2 70 48 0.464 
   3 70 48 0.45 
   1 80 48 0.502 
   2 80 48 0.511 
   3 80 48 0.482 
   1 90 48 0.549
   2 90 48 0.516 
   3 90 48 0.488 
   1 100 48 0.627 
   2 100 48 0.562 
   3 100 48 0.583
   ",
   header = TRUE,
   colClasses = c("factor", "integer", "factor", "double")
)

推荐阅读