В 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
, однако это не решает проблему полностью.