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.

Любые идеи будут очень полезны.

Спасибо кен

0 ответов

Другие вопросы по тегам