我正在研究受试者的生化数据,按性别分析结果。我有19项生化测试要分析每种性别,每一种药物(血液学和解剖学测试稍后到来)。
出于结果的重现性和防止转录错误的原因,我试图将每个测试汇总到一个表中。包括在表的输出,我需要一个列的邓尼特后临时比较p-值。由于邓尼特试验与对照结果相比,与对照和3个药物水平相比,我只得到3个p值。然而,我有4个平均值和sd值。
使用ddply获取平均值和sd结果(由于限制了重要数字的数量,我得到了如下所示的数据集:
Sex<- c(rep("F",4), rep("M",4))
Druglevel <- c(rep(0:3,2))
Sample <- c(rep(10,8))
Mean <- c(0.44, 0.50, 0.46, 0.49, 0.48, 0.55, 0.47, 0.57)
sd <- c(0.07, 0.07, 0.09, 0.12, 0.18, 0.19, 0.13, 0.41)
Drug1Biochem1 <- data.frame(Sex, Druglevel, Sample, Mean, sd)我在包multcomp中使用了multcomp来对由普通aov构建的aov对象执行Dunnett测试。我从glht摘要中提取了p-值(我将这些值舍入小数点后三位)。男性和女性的分析是使用单独的ANOVA进行的,所以我对每种性别都有一组输出。女性的结果是:
femaleR <- c(0.371, 0.973, 0.490) 男性的结果是:
maleR <- c(0.862, 0.999, 0.738)如何将p-值的列附加到我的原始dataframe (Drug1Biochem1)中,以便femaleR和maleR都在最后一列中,而该列的第1行和第5行为空(即控件没有p值)?
我希望将结果组合输出到html,它可以插入到Word文档中,这样就不会出现转录错误。我设置了一个种子值,以便程序的结果是可复制的(当我最终停止调试时)。
总之,我想要一个具有以下格式的数据框架(或表,或可以输出到html的任何东西):
Sex Druglevel Sample Mean sd p-value
F 0 10 0.44 0.07
F 1 10 0.50 0.07 0.371
F 2 10 0.46 0.09 0.973
F 3 10 0.49 0.12 0.480
M 0 10 0.48 0.18
M 1 10 0.55 0.19 0.862
M 2 10 0.47 0.13 0.999
M 3 10 0.57 0.41 0.738对于每一个测试,我都希望复制这个精确的表格。每个性别总是有4个组,而控制永远不会有一个p值,它总是在第1行(F)和第5行(M)中总结。
发布于 2015-04-19 05:02:42
你可以试试merge
dN <- data.frame(Sex=rep(c('M', 'F'), each=3), Druglevel=1:3,
pval=c(maleR, femaleR))
merge(Drug1Biochem1, dN, by=c('Sex', 'Druglevel'), all=TRUE)
# Sex Druglevel Sample Mean sd pval
#1 F 0 10 0.44 0.07 NA
#2 F 1 10 0.50 0.07 0.371
#3 F 2 10 0.46 0.09 0.973
#4 F 3 10 0.49 0.12 0.490
#5 M 0 10 0.48 0.18 NA
#6 M 1 10 0.55 0.19 0.862
#7 M 2 10 0.47 0.13 0.999
#8 M 3 10 0.57 0.41 0.738https://stackoverflow.com/questions/29725916
复制相似问题