Вам понадобятся значения n для обоих sd.Функция tsum.test
из пакета BSDA поможет вам выполнить t-тест без необходимости написания собственной функции.
Остается вопрос о целесообразности большогоколичество сравнений таким образом.Эта ссылка предоставляет информацию об этом.
С этим предупреждением, вот как сделать то, что вы хотите с некоторыми произвольными данными:
dat <- data.frame(m1=c(24,11,34),
sd1=c(1.3,4.2,2.3),
n1=c(30, 31, 30),
m2=c(18,8,22),
sd2=c(1.8, 3.4, 1.8),
n2=c(30,31,30))
# user function to do t-test and return desired values
do.tsum <- function(x) {
# tsum.test is quirky, so you have to break out each column's value
results <- tsum.test(x[1],x[2],x[3],x[4],x[5],x[6],alternative='two.sided')
return(c(results$statistic, results$parameters, results$p.value))
}
# use apply to do the tsum.test on each row (1 for rows, 2 for cols)
# then, transpose the resulting matrix and use the data.frame function
t.results <- data.frame(t(apply, 1, do.tsum))s
# unfortunately the p-value is returned without no column name (it returns 'm1')
# use the names function to change the third column name.
names(t.results)[3] <- 'p.value'
Вывод выглядит следующим образом:
t df p.value
1 14.800910 52.78253 1.982944e-20
2 3.091083 57.50678 3.072783e-03
3 22.504396 54.83298 2.277676e-29