Hinzufügen von Randwerten zur Datentabelle?

8

Was ist der richtige Weg, um Randsummen zu einer Datentabelle hinzuzufügen?

Was ich gerade mache:

%Vor%

Ich bin mir ziemlich sicher, dass das nicht der richtige Weg ist.

Was ist?

    
sds 06.01.2014, 21:02
quelle

1 Antwort

10

Eine Alternative ist diese:

%Vor%

Bearbeiten: Einige weitere Erklärungen zu := usage:

Der Operator := aktiviert hinzufügen / aktualisieren durch Referenz . Mit diesem können Sie:

  • Hinzufügen neuer Spalten oder Aktualisieren vorhandener Spalten durch Verweis

    %Vor%
  • Hinzufügen oder Aktualisieren bestimmte Zeilen von neuen oder vorhandenen Spalten durch Verweis

    %Vor%
  • hinzufügen oder update Spalten während Gruppierung , durch Verweis - standardmäßig wird das berechnete Ergebnis innerhalb jeder Gruppe wiederverwendet.

    %Vor%
  

Hier gibt sum(z) 1 Wert für jede Gruppe in x zurück. Das Ergebnis wird dann für die Länge der Gruppe that wiederverwendet und mit zsum hinzugefügt / aktualisiert.

  • fügen Sie oder update während einer by-without-by -Operation hinzu. Wenn Sie also data.table join ausführen und Spalte während beitreten hinzufügen / aktualisieren:

    %Vor%
  • Schließlich können Sie auch Spalten durch Verweis entfernen (d. h. sofort, selbst wenn es sich um eine 20-GB-Tabelle handelt):

    %Vor%

Hoffentlich hilft das, die Verwendung in := zu verdeutlichen. Überprüfen Sie auch ?set . Es ist ähnlich wie := , aber mit der Einschränkung, dass nicht mit Joins kombiniert werden kann. Dies ermöglicht es, innerhalb einer for -Schleife schneller zu sein (aufgrund des geringeren Overheads, da% ce_de% nicht aufgerufen wird) für alle Operationen, die es ausführen kann als [.data.table .

In einigen Szenarien kann es besonders nützlich sein. Siehe diesen Beitrag für eine nette Verwendung.

    
Jilber Urbina 06.01.2014, 21:04
quelle

Tags und Links