【问题标题】:Looping multiple TukeyHSD tests into one table?将多个 TukeyHSD 测试循环到一张表中?
【发布时间】:2016-11-21 04:56:30
【问题描述】:

我有多个类似于以下的 csv 文件。

Library Parameter1
A       3
A       2
A       5
B       2
B       1
B       9
C       4
C       2
C       8

实际上是这样的:CSV Table

在这种情况下,每个 .csv 文件都以化学参数命名,例如“logtPSA.csv”。如您所知,标题是“库”和“值”。我有 4 个不同的库:FDA、SMRNA、VD_SM 和 VD_MV。

我一直在对所有这些进行 ANOVA 测试和 TukeyHSD 测试,但是 R 并没有以将结果分成单元格的格式给出它,所以我可以复制并粘贴到 Excel 中,因此如果我要这样做的话手会变得相当乏味。

我想知道是否有某种方法可以编写一个函数,一次遍历我的所有文件,执行测试,然后将其全部输出到两个整洁的表中(1 个用于 ANOVA,1 个用于 TukeyHSD) .

【问题讨论】:

    标签: r loops anova tukey


    【解决方案1】:

    有多种方法可以做到这一点,这只是一种:

    导入所有数据文件

    setwd("C:/Users/VANBE/Desktop")
    files = dir(".", pattern = ".csv")
    files.dir = paste(getwd(),"/" ,files,sep="")
    load = lapply(files.dir, read.csv2,header=T,sep=",",dec=".")
    names(load)=unlist(strsplit(files,".csv")) # not truly necesary
    

    外观示例

    load = list(FILENAME1=data.frame(x=1699:1722,Library=c(rep("FDA",18),rep("SMMRMA",6)),logtPSA=rnorm(1.5,1,24)),
                FILENAME2=data.frame(x=1699:1722,Library=c(rep("FDA",18),rep("SMMRMA",6)),logtELSE=rnorm(2,1,24)))
    

    将结果放入数据框

    load= lapply(load, function(x) {names(x) = c("number","library","parameter");  return(x) }) # make sure columnnames of al items are identical
    
    f.AN = function(x){out=aov(parameter ~ library,x)
    AN=summary(out)[[1]]}
    f.TU = function(x){out=aov(parameter ~ library,x)
    TU=TukeyHSD(out)[[1]]}
    
    AN = do.call("rbind",lapply(load,f.AN))
    TU = do.call("rbind",lapply(load,f.TU))
    

    【讨论】:

    • 嗨波谢谢你的回答。在我无法弄清楚如何替换事物以使其特别适合我之前,我已经达到了您答案的第一部分。我用更具体的信息更新了我的问题,所以我希望你能帮助我更多?当然,我可以提供任何必要的额外信息。我对 R 还是很陌生,所以我不确定我是否以合理有效的方式命名所有文件和标题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多