data.table сравнивает группы, используя t.test
У меня есть следующая структура данных.
dat <- as.data.table(cbind(var1=rep(1:5, 200),
var2=rep(c("gp1", "gp2"), each=500),
as.data.frame(matrix(rnorm(5000, 0, 1),ncol=5))))
Я хотел бы провести t.test между gp1 и gp2, сгруппированными по var1. Я прочитал некоторые другие сообщения, когда есть только один столбец данных, используя что-то вроде:
dat[, .(p.value = t.test(V1 ~ var2, .SD)$p.val), by=.(var1)]
Что я не могу понять для своей жизни, так это то, как я могу сделать это по всем другим столбцам (то есть V2-V5). Виньетки помогли указать на использование lapply(.SD, somefunction) для итерации по столбцам, но в этом случае я не совсем уверен, как заставить это работать для меня.
Приведенный выше пример является игрушечным примером. Я работаю с миллионами строк данных и несколькими сотнями столбцов, поэтому скорость является проблемой. В настоящее время я использую вложенный метод apply для итерации по строкам и столбцам, и функция запускается часами. Я надеюсь на что-то более быстрое.
Было бы еще лучше, если бы я мог сделать это между двумя разными data.tables. (т. е. gp1 в своем собственном data.table и gp2 в другом).
Долгое время пользователь R, нуб, когда дело доходит до data.table.
Любые идеи будут очень полезны.
Спасибо кен