Сначала давайте сделаем несколько примеров данных. Для каждого образца у нас есть уникальный идентификатор, его экспериментальная группа и некоторые переменные, для которых мы хотим рассчитать среднее значение и SD.
## Make a data frame called "Data" with five columns
Data <- as.data.frame(cbind(1:100, sample(1:2), rnorm(100), rnorm(100), rnorm(100), rnorm(100)))
names(Data) <- c("ID", "Group", "V1", "V2", "V3", "V4")
## Now we will take a peak at the top of our data frame
> head(Data)
ID Group V1 V2 V3 V4
1 1 2 0.3681539 -0.5008400 1.2060665 -0.7352376
2 2 1 -0.1043180 2.2038190 -1.4367898 2.1961246
3 3 2 -0.2720279 -0.5923554 -1.4628190 -1.8776453
4 4 1 -2.3299662 -0.1216227 0.4200776 1.5504020
5 5 2 -0.3670578 -1.5903221 -0.6287083 -1.0543262
6 6 1 0.4840047 -0.3181554 -1.4596980 -0.4261827
Теперь мы можем запустить цикл for через переменные, вывести их средние значения, значения SD и значения p и выгрузить их все в объект с именем «Results».
## Define object which will receive our results
Results <- NULL
Results <- as.data.frame(Results)
## Open for loop
for (i in 3:6) {
## Run the t.test() and save it in a temporary object
temp <- t.test(Data[which(Data$Group == 1), i], Data[which(Data$Group == 2), i])
## Put the name of our variable in our results object
Results[i-2,1] <- names(Data)[i]
## Group 1 mean and SD
Results[i-2,2] <- temp$estimate[1]
Results[i-2,3] <- sd(Data[which(Data$Group == 1), i])
## Group 2 mean and SD
Results[i-2,4] <- temp$estimate[2]
Results[i-2,5] <- sd(Data[which(Data$Group == 2), i])
## P value for difference
Results[i-2,6] <- temp$p.value
rm(temp)
}
Теперь мы можем сделать наши результаты красивыми и распечатать их.
## Add column names
names(Results) <- c("Variable", "Group.1.Mean", "Group.1.SD", "Group.2.Mean", "Group.2.SD", "P.Value")
## View our results
> Results
Variable Group.1.Mean Group.1.SD Group.2.Mean Group.2.SD P.Value
1 V1 0.21544390 0.9404104 -0.01426226 1.0570324 0.2537820
2 V2 0.26287585 1.0048291 0.22992285 0.9709686 0.8679038
3 V3 -0.06112963 0.9855287 0.17423440 1.0198694 0.2434507
4 V4 0.33848678 0.9360016 0.07905932 0.9106595 0.1632705