我设计了一个实验来观察进餐后血清标记物如何随时间变化。我有一个由 72 个观察值和 23o 个变量组成的数据框,称为 BreakfastM。
有 229 个变量是血清标记物,1 个是时间点。观察结果是不同的样本
我正在寻找血清标记物(即胆固醇)如何随时间点变化的数据趋势。我创建了一个箱线图,它很好地显示了特定血清标记物相对于时间点的趋势
这是我使用的代码
boxplot((BreakfastM$Variable~BreakfastM$Timepoint))
Run Code Online (Sandbox Code Playgroud)
有没有一种快速方法可以通过在 R 中编写循环代码来根据时间点测试数据帧中的所有变量?
如果您只是想绘图,使用tidyr(and dplyr) 转换为长格式,然后使用 绘图ggplot2可能是最好的起点。
如果您只有少量变量,则可以仅使用facet_wrap按度量分割箱线图。因为您没有提供可重现的数据,所以我正在使用这些mtcars数据,用“齿轮”代替您的时间点,并仅限于要比较的数值。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")
Run Code Online (Sandbox Code Playgroud)
现在,有 229 个变量,这将不是一个可读的图。相反,您可能想查看facet_multiple从ggplus哪个方面将面分布到多个页面上。在这里,我使用它在每个“页面”中放置一个,您可以根据您的需要在查看器中查看或保存。
首先,保存基本图(没有分面):
basePlot <-
mtcars %>%
select(gear, mpg, disp:qsec) %>%
gather(Measure, Value, -gear) %>%
ggplot(aes(x = factor(gear)
, y = Value)) +
geom_boxplot()
Run Code Online (Sandbox Code Playgroud)
然后,使用它作为参数facet_multiple:
facet_multiple(basePlot, "Measure"
, nrow = 1
, ncol = 1
, scales = "free_y")
Run Code Online (Sandbox Code Playgroud)
将生成与上面相同的面板,但每页一个(更改nrow并ncol可以增加每页显示的面数)。