Зацикливание нескольких тестов TukeyHSD в одной таблице?
У меня есть несколько 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, SMMRNA, VD_SM и VD_MV.
Я выполняю тесты ANOVA и TukeyHSD для всех из них, но R не дает их в формате, где результаты разделяются на ячейки, поэтому я могу просто скопировать и вставить в Excel, поэтому, если бы я делал это вручную, это стать довольно утомительным.
Мне было интересно, есть ли какой-нибудь способ, которым я мог бы написать функцию, которая бы просматривала все мои файлы по одному, выполняла тест и выводила все это в две аккуратные таблицы (1 для ANOVA, 1 для TukeyHSD).
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))