我有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"))