Verknüpfen Sie data.table mit Stichproben

8

Ich habe ein paar große Datensätze, die ich zu kombinieren versuche. Ich habe ein Spielzeugbeispiel dafür erstellt, was ich tun möchte. Ich habe drei Tabellen:

%Vor%

Die drei Tabellen sind x , y und proportion . Für jedes Element in x möchte ich aus der gesamten Tabelle y mit den Wahrscheinlichkeiten aus der Tabelle proportion samplen und sie zu einer anderen Tabelle zusammenfassen. Die Methode, die ich gefunden habe, ist:

%Vor%

Aber diese Methode ist speicherintensiv und langsam, da sie zuerst die beiden Tabellen kreuzt und dann von ihr abtastet. Gibt es eine Möglichkeit, diese Aufgabe effizient (Speicher und Zeit) zu erledigen?

    
A Gore 19.05.2017, 20:52
quelle

1 Antwort

1

Ich hatte ein ähnliches Problem in diese Frage. Ich habe Ihre Lösung zum besseren Vergleich in Funktion gebracht:

%Vor%

Mein Ansatz:

%Vor%

Vielleicht gibt es weitere Verbesserungen, die ich aktualisieren werde, falls sie gefunden werden. Die ersten beiden Operationen scheinen zu kompliziert zu sein, vielleicht können sie verkürzt werden, aber da ich nicht gesehen habe, dass sie die Berechnung beeinflussen, habe ich sie nicht neu geschrieben.

Aktualisierung:

Wie bereits erwähnt, könnten Sie Probleme mit myFunction bekommen, wenn Ihre Gruppen nur ein Element enthalten würden. Also habe ich es modifiziert, basierend auf den Kommentaren von diesem Beitrag.

%Vor%

Wir können eine marginale Geschwindigkeitsverbesserung sehen.

    
minem 02.06.2017 06:59
quelle

Tags und Links