r - 在 r 中为多个箱形图创建循环

我设计了一个实验来观察自进餐后血清标记物如何随时间变化。我有一个由 72 个观察值和 23o 个变量组成的数据框,称为 BreakfastM。

有 229 个变量是血清标志物,1 个是时间点。观察是不同的样本

我正在寻找血清标志物(即胆固醇)如何随时间点变化的数据趋势。我创建了一个箱线图,它很好地显示了特定血清标记物相对于时间点的趋势

这是我使用的代码

boxplot((BreakfastM$Variable~BreakfastM$Timepoint))

有没有一种通过在 R 中编写循环代码来针对时间点测试数据帧中所有变量的快速方法?

最佳答案

如果您只是想绘图,使用 tidyr(和 dplyr)转换为长格式,然后使用 ggplot2 进行绘图可能是最佳起点。

如果您只有少量变量,您可以只使用 facet_wrap 按度量拆分箱线图。因为您没有提供可重现的数据,所以我正在使用 mtcars 数据,用“gear”代替您的时间点,并且仅限于要比较的数值。 select 正在选择我要使用的列,然后 gather 在传递给 ggplot

之前将它们转换为长格式
mtcars %>%
  select(gear, mpg, disp:qsec) %>%
  gather(Measure, Value, -gear) %>%
  ggplot(aes(x = factor(gear)
             , y = Value)) +
  geom_boxplot() +
  facet_wrap(~Measure
             , scales = "free_y")

现在,有 229 个变量,这将不是一个可读的图。相反,您可能想查看 ggplus 中的 facet_multiple,它将 facet 分布在多个页面上。在这里,我使用它为每个“页面”放置一个,您可以根据需要在查看器中查看或保存。

首先,保存 basemap (没有分面):

basePlot <-
  mtcars %>%
  select(gear, mpg, disp:qsec) %>%
  gather(Measure, Value, -gear) %>%
  ggplot(aes(x = factor(gear)
             , y = Value)) +
  geom_boxplot()

然后,将其用作 facet_multiple 的参数:

facet_multiple(basePlot, "Measure"
               , nrow = 1
               , ncol = 1
               , scales = "free_y")

将生成与上面相同的面板,但每页一个(更改 nrowncol 可以增加每页显示的分面数)。

https://stackoverflow.com/questions/40366468/

相关文章:

python - django 模板中的多个加载标签

macos - 从 Mac OSX 移除 Saltstack

reactjs - 如何淡入淡出文本

winapi - Windows 函数调用中的堆栈是如何设置的?

haskell - Haskell 中的 'let' 和变量

performance - AWS 资源共享

angular - 循环调用 Angular2 服务

user-interface - 如何更改 NativeScript 标签的文本

python - 在 python 中的 .ttf 字体文件中检索所有字形的边界框和贝塞尔曲线数据

r - 删除取值小于 n 的列?