按行号 R 组合和附加不同长度的列
Combining and appending columns of different lengths, by row number, R
我正在处理受试者的生化数据,按性别分析结果。我有 19 种生化测试来分析每种性别,两种药物中的每一种(稍后进行血液学和解剖学测试)。
出于结果的可重复性和防止转录错误的原因,我试图将每个测试总结为一个 table。在 table 输出中,我需要一列用于 Dunnett post hoc 比较 p 值。因为 Dunnett 检验与对照结果进行比较,所以在对照和 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
中的 glht
对我从正常 aov
构建的 aov
对象执行 Dunnett 测试。我从 glht
摘要中提取了 p 值(我将这些值四舍五入到小数点后三位)。男性和女性分析 运行 使用单独的 ANOVA
所以我为每种性别都有一组输出。女性结果为:
femaleR <- c(0.371, 0.973, 0.490)
男性结果为:
maleR <- c(0.862, 0.999, 0.738)
如何将 p 值列附加到我的原始数据框 (Drug1Biochem1),以便 femaleR 和 maleR 都在最后一列中,该列的第 1 行和第 5 行为空(即没有 p-控件的值)?
我希望将生成的组合输出到 html,可以将其插入到 Word 文档中,以免出现转录错误。我已经设置了一个种子值,以便程序的结果是可重现的(当我最终停止调试时)。
总而言之,我想要一个具有以下格式的数据框(或 table,或任何我可以输出到 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
对于每个测试,我都希望重现这个 table。每个性别总是有 4 个组,并且永远不会有控制的 p 值,它总是在第 1 行 (F) 和第 5 行 (M) 中汇总。
你可以试试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.738
我正在处理受试者的生化数据,按性别分析结果。我有 19 种生化测试来分析每种性别,两种药物中的每一种(稍后进行血液学和解剖学测试)。
出于结果的可重复性和防止转录错误的原因,我试图将每个测试总结为一个 table。在 table 输出中,我需要一列用于 Dunnett post hoc 比较 p 值。因为 Dunnett 检验与对照结果进行比较,所以在对照和 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
中的 glht
对我从正常 aov
构建的 aov
对象执行 Dunnett 测试。我从 glht
摘要中提取了 p 值(我将这些值四舍五入到小数点后三位)。男性和女性分析 运行 使用单独的 ANOVA
所以我为每种性别都有一组输出。女性结果为:
femaleR <- c(0.371, 0.973, 0.490)
男性结果为:
maleR <- c(0.862, 0.999, 0.738)
如何将 p 值列附加到我的原始数据框 (Drug1Biochem1),以便 femaleR 和 maleR 都在最后一列中,该列的第 1 行和第 5 行为空(即没有 p-控件的值)?
我希望将生成的组合输出到 html,可以将其插入到 Word 文档中,以免出现转录错误。我已经设置了一个种子值,以便程序的结果是可重现的(当我最终停止调试时)。
总而言之,我想要一个具有以下格式的数据框(或 table,或任何我可以输出到 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
对于每个测试,我都希望重现这个 table。每个性别总是有 4 个组,并且永远不会有控制的 p 值,它总是在第 1 行 (F) 和第 5 行 (M) 中汇总。
你可以试试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.738