遍历数据框并绘制均值和CI

时间:2018-07-17 13:51:32

标签: r loops ggplot2 functional-programming dplyr

我有7个数据框,它们显示了我使用函数产生的不同变量四分位数之间的列的均值和置信区间:

library(tidyverse)
library(Rmisc) 

means.data <- function(data, x, y) {
  summarySE(data, measurevar=y,groupvars=x,  na.rm = TRUE)
}
bmd.tblmq <- means.data(data, 'tblm.q', 'thip_bmd')
bmd.sarc3 <- means.data(data, 'sarc_status_3cat', 'thip_bmd')
bmd.sppbb <- means.data(data, 'sppb_cats', 'thip_bmd')
bmd.grpsq <- means.data(data, 'grip_strength.q', 'thip_bmd')
bmd.gaitq <- means.data(data, 'gait_speed.q', 'thip_bmd')
bmd.frcq <- means.data(data, 'force.q', 'thip_bmd')
bmd.powrq <- means.data(data, 'power.q', 'thip_bmd')

str(bmd.tblmq)
'data.frame':   5 obs. of  6 variables:
$ tblm.q  : Factor w/ 4 levels "(27.9,34.5]",..: 1 2 3 4 NA
$ N       : num  68 82 74 62 1
$ thip_bmd: num  0.813 0.836 0.912 0.924 0.632
$ sd      : num  0.118 0.136 0.145 0.125 NA
$ se      : num  0.0143 0.015 0.0169 0.0159 NA
$ ci      : num  0.0285 0.0299 0.0336 0.0317 NA

我想使用一个函数/循环来绘制每个数据帧的均值和CI,而不必为每个数据帧和每个x变量重复以下代码:

bmd.tblm.plot <- ggplot(data=subset(bmd.tblmq, !is.na(tblm.q)), 
                        aes(x=tblm.q, y=thip_bmd, ymin=thip_bmd-ci, ymax=thip_bmd+ci)) +
  geom_pointrange()  + 
  xlab("Lean mass quartile") + ylab("Mean TH BMD (95% CI)") +
  ggtitle("TH BMD: lean mass quartile") +
  scale_x_discrete(labels=c("Q1", "Q2","Q3", "Q4"))

0 个答案:

没有答案