【问题标题】:Combining and appending columns of different lengths, by row number, R组合和附加不同长度的列,按行号,R
【发布时间】:2015-04-19 04:48:42
【问题描述】:

我正在处理受试者的生化数据,并按性别分析结果。我有 19 项生化测试要分析每种性别、两种药物中的每一种(稍后会进行血液学和解剖学测试)。

出于结果可重复性和防止转录错误的原因,我试图将每个测试汇总到一张表中。包含在表输出中,我需要一列用于 Dunnett 事后比较 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 文档中,这样就不会发生转录错误。我设置了一个种子值,以便程序的结果是可重现的(当我最终停止调试时)。

总之,我想要一个具有以下格式的数据框(或表格,或任何我可以输出到 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) 中进行汇总。

【问题讨论】:

    标签: r cbind


    【解决方案1】:

    你可以试试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
    

    【讨论】:

    • 谢谢,我想多了,没有考虑将我可以合并的列添加到 p 值数据中。我一直在纠结,试图弄清楚如何与特定的向量相关联。
    • @Michelle 没问题。另外,我猜男性和女性部分可能不必分开完成。使用Sex 作为分组变量,您可以使用dplyrdata.table 执行此操作。 (我没有测试它,因为glht 的代码不在帖子中)。
    猜你喜欢
    • 2013-08-02
    • 2018-03-23
    • 2018-07-26
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多