Подсчитать количество строк с 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