als.Daten.Rahmen der Tabelle() zusammenfassen Frequenzen
In R, ich bin auf der Suche nach einem Speicher-effizienteste Weg, um erstellen Sie eine tabellarische Zusammenfassung der Daten wie folgt.
Nehmen Sie zum Beispiel die data.frame
foo
die ich verwendet habe table()
zu fassen, gefolgt von as.data.frame()
zu erhalten, die Häufigkeit zählt.
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)
Diese Ergebnisse in der folgenden Frequenz-Grafen für 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
Das problem das ich in Betrieb ist, wenn es gibt viele Ebenen der x
und y
, es beginnt mit, dass signifikante Mengen von Speicher - >64 GB. Ich Frage mich, ob es eine alternative Möglichkeit, dies zu tun Art von Frequenz zählen. Als ersten Schritt, habe ich stringsAsFactors=F
, dies jedoch nicht vollständig das problem lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese Methode für schnelle (spärlich) kreuztabellierung. Ich denke, es gibt Möglichkeiten für eine weitere Optimierung, aber es ist schon gut genug für mich, für große Daten-sets. Der Schlüssel ist die Verwendung von
ninteraction
von derplyr
Paket, um schnell zu generieren, die eine numerische id für jede Zeile.Blick auf die
xtabs
Methode in derMatrix
- Paket, das keine sparse-Kreuz-Tabellierung.xtabs
funktioniert nur mit zwei-Wege-Tabellen. Es stellt sich heraus, dass in meinem konkreten Fall habe ich eigentlich eine Tabelle, die die drei-Wege.