Подсчитать количество строк с p-значением, равным или ниже 0,05

Я новичок в программировании на R. Я сталкиваюсь с проблемами, которые решают это:

Dataset:

set.seed(897)
ME <- matrix(rnorm(24000),nrow=1000)
colnames(ME) <- c(paste("A",1:12,sep=""),paste("B",1:12,sep=""))

Используйте apply() для вычисления статистического теста для каждой строки в ME. Вы хотите спросить, относятся ли группы A и B к одной и той же популяции или из разных групп населения. Вы можете считать данные нормально распределенными. Подсчитайте количество строк с p-значением, равным или ниже 0,05.

Я старался >P<- apply(ME , 1 , function(ME){ t.test(ME[1:1000])$p.value })> length(which(P <= 0.05)) хмуриться смайлик, но это неправильно

1 ответ

Решение

Если имена столбцов не в определенном порядке, то мы можем использовать grep найти индекс имен столбцов, которые начинаются с A а также с B,

 ind1 <- grep('^A', colnames(ME))
 ind2 <- grep('^B', colnames(ME))

Тогда мы делаем t.test по строкам apply с MARGIN=1

 pval <- apply(ME, 1, FUN=function(x) t.test(x[ind1], x[ind2])$p.value)
 head(pval)
 #[1] 0.4987050 0.0303736 0.7143174 0.2955703 0.5082427 0.2109010

Мы получаем логический индекс, сравнивая с 0,05

 v1 <- pval <= 0.05

Получить sum из TRUE значения, чтобы найти количество строк, которые имеют p.value менее чем 0,05

sum(v1)
#[1] 55
Другие вопросы по тегам