В R я ищу эффективный для памяти способ создания сводных табличных данных следующим образом.
Возьмем, к примеру, data.frame
foo
, который я использовал для суммирования table()
, а затем as.data.frame()
для получения подсчетов частоты.
foo <- data.frame(x= c('a', 'a', 'a', 'b', 'b', 'b'), y=c('ab', 'ac', 'ad', 'ae', 'fx', 'fy'))
bar <- as.data.frame(table(foo), stringsAsFactors=F)
Это приводит к следующему подсчету частоты для bar
x y Freq
1 a ab 1
2 b ab 0
3 a ac 1
4 b ac 0
5 a ad 1
6 b ad 0
7 a ae 0
8 b ae 1
9 a fx 0
10 b fx 1
11 a fy 0
12 b fy 1
Проблема, с которой я сталкиваюсь, состоит в том, что когда существует много уровней x
и y
, он начинает использовать значительные объемы памяти> 64 ГБ. Мне было интересно, есть ли альтернативный способ сделать такой подсчет частоты. В качестве первого шага я установил stringsAsFactors=F
, однако это не полностью решает проблему.