I have over 150 t-tests between different groups in a study (with only like 25 variables being significant) but I still need to list out all the results for my thesis appendix.
Is there an easy way to combine each of the t-tests into 1 table?
Also, I know my method is inefficient, I couldn't figure out the for loop (if anyone would know how to do that with 2 databases)
Example of the t-tests.
t.test(Q8d3landowner$Q8_1, Q8d3rent$Q8_1, var.equal = TRUE)
t.test(Q8d3landowner$Q8_2, Q8d3rent$Q8_2, var.equal = TRUE)
t.test(Q8d3landowner$Q8_3, Q8d3rent$Q8_3, var.equal = TRUE)
t.test(Q8d3landowner$Q8_4, Q8d3rent$Q8_4, var.equal = TRUE)
t.test(Q8d3landowner$Q8_5, Q8d3rent$Q8_5, var.equal = TRUE)
t.test(Q8d3landowner$Q8_6, Q8d3rent$Q8_6, var.equal = TRUE)
t.test(Q8d3landowner$Q8_7, Q8d3rent$Q8_7, var.equal = TRUE)
t.test(Q8d3landowner$Q8_8, Q8d3rent$Q8_8, var.equal = TRUE)
t.test(Q8d3own$Q8_1, Q8d3rent$Q8_1, var.equal = TRUE)
t.test(Q8d3own$Q8_2, Q8d3rent$Q8_2, var.equal = TRUE)
t.test(Q8d3own$Q8_3, Q8d3rent$Q8_3, var.equal = TRUE)
t.test(Q8d3own$Q8_4, Q8d3rent$Q8_4, var.equal = TRUE)
t.test(Q8d3own$Q8_5, Q8d3rent$Q8_5, var.equal = TRUE)
t.test(Q8d3own$Q8_6, Q8d3rent$Q8_6, var.equal = TRUE)
t.test(Q8d3own$Q8_7, Q8d3rent$Q8_7, var.equal = TRUE)
t.test(Q8d3own$Q8_8, Q8d3rent$Q8_8, var.equal = TRUE)
Output example
Two Sample t-test
data: Q8d3own$Q8_5 and Q8d3rent$Q8_5
t = 1.3478, df = 943, p-value = 0.178
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.04012354 0.21607738
sample estimates:
mean of x mean of y
2.884892 2.796915
That's rather easy. Look into the result of one t.test
,
tt <- t.test(Q1$X1, Q3$X1)
str(tt) ## displays structure
or at the names
names(tt)
# [1] "statistic" "parameter" "p.value" "conf.int" "estimate"
# [6] "null.value" "stderr" "alternative" "method" "data.name"
to decide what to use, i.e. on what to subset the result.
Then you can use one-liners with mapply
.
t(mapply(\(...) t.test(..., var.equal=TRUE)[c('statistic', 'p.value')], Q1, Q3))
# statistic p.value
# X1 0.4672679 0.640822
# X2 -0.3376005 0.7360219
# X3 -0.413335 0.6798085
# X4 -0.3215545 0.7481294
# X5 -1.005416 0.3159237
# X6 -0.6543237 0.5136626
# X7 -0.9552577 0.3406122
# X8 -1.003932 0.3166368
# X9 0.3103211 0.7566432
# X10 1.920206 0.05626892
t(mapply(\(...) t.test(..., var.equal=TRUE)[c('statistic', 'p.value')], Q2, Q3))
# statistic p.value
# X1 -0.6516574 0.5153779
# X2 0.5773907 0.5643315
# X3 0.1885351 0.8506503
# X4 -1.724851 0.08611486
# X5 -0.5244006 0.6005865
# X6 -0.6333486 0.5272369
# X7 1.493958 0.1367784
# X8 -0.5299757 0.5967226
# X9 0.9243501 0.3564292
# X10 0.4313086 0.6667132
Data:
set.seed(42)
m <- 100; n <- 10
Q1 <- data.frame(matrix(rnorm(m*n), m, n))
Q2 <- data.frame(matrix(rnorm(m*n), m, n))
Q3 <- data.frame(matrix(rnorm(m*n), m, n))