首页 文章

将多个TukeyHSD测试循环到一个表中?

提问于
浏览
1

我有多个类似于以下的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” . 你可以告诉你的 Headers 是“图书馆”和“ Value ” . 我有4个不同的库:FDA,SMMRNA,VD_SM和VD_MV .

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

我想知道是否有某种方法可以编写一个函数,一次一个地查看我的所有文件,执行测试,并将它们全部输出到两个整齐的表中(1个用于ANOVA,1个用于TukeyHSD) .

1 回答

  • 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))
    

相关问题