beschleunigt den Datenrahmenvergleich

7

Ich habe zwei Datenrahmen, ähnlich wie diese:

%Vor%

Ich möchte die Suche $ t von den Daten $ v subtrahieren, wo die Spalten h und c übereinstimmen.

Ich dachte, so etwas würde funktionieren.

%Vor%

, weiß aber nicht, dass ich implizit über die Datenzeilen iterieren möchte

Ich habe das gemacht

%Vor%

was gut funktioniert, aber ich hoffe, dass jemand einen vernünftigeren Weg vorschlagen kann, der keine Schleife beinhaltet.

    
ansate 15.01.2011, 04:02
quelle

4 Antworten

8

Klingt so, als könntest du dich zusammenschließen und dann matchen:

%Vor%

Für Ihre echten Daten, ist die Zusammenführung und Berechnung schneller?

Wenn Daten und / oder Lookup wirklich groß sind, können Sie data.table verwenden, um vor der Zusammenführung einen Index zu erstellen, um ihn zu beschleunigen.

    
JD Long 15.01.2011, 04:11
quelle
6

Eine Alternative, die 1.) denen vertraut ist, die mit SQL-Abfragen vertraut sind und 2.) oft schneller als die Standard-Zusammenführung ist, die sqldf Paket. (Beachten Sie, dass Sie unter Mac OS X wahrscheinlich Tcl / Tk installieren möchten, von dem sqldf abhängt.) Als zusätzlichen Bonus konvertiert sqldf standardmäßig Zeichenfolgen automatisch in Faktoren.

%Vor%     
Michael P. Manti 15.01.2011 08:11
quelle
4

Mit Ihren Integer-Spalten glaube ich nicht, dass Sie irgendetwas tun können, um das Angebot von JD zu verbessern. Wenn Sie jedoch Strings in den Spalten hätten, in denen Sie zusammenführen, könnten Sie Faktoren mit as.factor erstellen, die schneller werden könnten Der merge hängt von der Größe Ihres Datensatzes ab und davon, wie viele Zusammenführungen / Sortierungen Sie erwarten:

%Vor%     
Richard Herron 15.01.2011 05:10
quelle
1

Dies ist perfekt für data.table mit by ohne by

%Vor%     
mnel 03.10.2012 04:58
quelle

Tags und Links