Итерационные t-тесты в dataframe с lapply - PullRequest
0 голосов
/ 23 июня 2018

У меня есть набор данных30 с 38 переменными.Я хочу провести t-тесты для некоторых из 37 переменных и сгруппировать их по 38-й переменной ... как это:

t.test (dataset30$Var1[which(dataset30$Var38 == 1)],dataset30$Var[which(dataset30$Var38 == 2)])

Я возился с ласковой попыткой перебрать все переменные в качестве первого шага кРешение, но не удалось:

lapply(dataset30, t.test(x[which(dataset30$Var38 == 1)],x[which(dataset30$ == 2)]))

Как это можно сделать?

1 Ответ

0 голосов
/ 23 июня 2018

Как насчет этого:

Поскольку пример не приведен, я собираюсь использовать mtcars в качестве набора данных, присутствующего в среде R.

mtcars_subst <- mtcars[,c("mpg", "drat", "hp", "am")] #Sample data
#Final code for running t.test
lapply(mtcars_subst[,c(1,2,3)], function(x)t.test(x ~ am, data=mtcars_subst))
 # iteratively running t.test on column mpg, drat and hp basis am as the category

Обновлено после уточнения:

Логика :

Фильтрация значений цил на 4 и 6, Всего есть три категории в цил (4,6 и 8) для выборатолько 4,6.Я использовал% в% здесь.Либо вы отфильтровываете внутри lapply, либо извлекаете необходимые данные снаружи, а затем используете lapply.

mtcars_subst <- mtcars[,c("mpg", "drat", "hp", "cyl")]
lapply(mtcars_subst[mtcars_subst$cyl %in% c(4,6),c(1,2,3)], function(x)t.test(x ~ cyl, data=mtcars_subst[mtcars_subst$cyl %in% c(4,6),])) #comparing certain 2 groups
...