У меня есть кадр данных в очень простой форме:
X Y
---
A 1
A 2
B 3
C 1
C 3
Мой конечный результат должен быть таким списком:
$`A`
[1] 1 2
$`B`
[1] 3
$`C`
[1] 1 3
Для этой операции я использую функцию split() в R:
k <- split(Y, X)
Это работает просто отлично. Однако, если я хочу применить этот код к фрейму данных, содержащему 22 миллиона строк, включая 10 миллионов групп для X и 387 000 значений для Y, это займет очень много времени. Я попытался использовать открытую версию RRO 8.0 для поддержки MKL. Однако по-прежнему используется только одно ядро. Процессор имеет 64 ГБ оперативной памяти, так что это не должно быть проблемой.
Любые идеи для более умного способа вычислить это?
data.table
илиdplyr
- person akrun   schedule 04.12.2014dplyr
, но не мог понять, как это сделать. В любом случаеdplyr
не вернет фрейм данных? Я думаю, что структура списка была бы более удобной для постобработки. - person Daniel Schultz   schedule 04.12.2014data.table
, а также вdplyr
(сdo
) - person akrun   schedule 04.12.2014dplyr
. В попытке я использовал функцииgroup_by
иsummarise
, но не смог найти лучший способ сделать это. - person Daniel Schultz   schedule 04.12.2014apriori
из пакетаarules
. - person Daniel Schultz   schedule 04.12.2014?apriori
принимает в качестве входных данных объект транзакций класса или любую структуру данных, которую можно преобразовать в транзакции (например, двоичную матрицу или data.frame). Таким образом, вы, вероятно, могли бы работать без преобразования в список. Однако у меня нет опыта работы с этим пакетом. - person talat   schedule 04.12.2014split
- person Rich Scriven   schedule 04.12.2014apriori
не нужен список в меньшем тестовом фрейме данных. Однако результаты не коррелируют на единицу. Когда я использую фрейм данных, командаas
находит количество строк как транзакций. Хотя, очевидно, список находит количество групп в качестве транзакций. Второй способ - это то, что я хочу. Я был бы рад избавиться от списка из-за времени, но я не вижу, как это сделать. Первые тесты не были многообещающими. - person Daniel Schultz   schedule 05.12.2014