Dies ist, was meine Datentabelle wie folgt aussieht:Holen Sie sich das letzte Zeile einer vorherigen Gruppe in data.table
library(data.table)
dt <- fread('
Product Group LastProductOfPriorGroup
A 1 NA
B 1 NA
C 2 B
D 2 B
E 2 B
F 3 E
G 3 E
')
Die LastProductOfPriorGroup
Spalte ist meine gewünschte Spalte. Ich versuche, das Produkt aus der letzten Reihe der vorherigen Gruppe zu holen. In den ersten beiden Zeilen gibt es also keine vorherigen Gruppen und daher ist es NA
. In der dritten Zeile ist das Produkt in der letzten Zeile der vorherigen Gruppe 1 B
. Ich versuche, dies zu erreichen, indem
dt[,LastGroupProduct:= shift(Product,1), by=shift(Group,1)]
vergeblich.
Sie verwenden by = Gruppe 2 mal. Was macht der 1. gegen den 2.? und was ist die Bedeutung von $ V1? – gibbz00
@ gibbz00 - Ich habe eine Erklärung hinzugefügt. Ich hoffe es hilft. –
Sie berechnen 'shift (dt [, last (Product), by = Gruppe] $ V1)' immer wieder für jede Gruppe. Ich würde wahrscheinlich 'dt [dt [, last (Produkt), by = Gruppe] [, v: = shift (V1)], on =" Gruppe ", newcol: = iv]' – Frank