Hier ein Beispiel für meine data.frame:Shift-Zeilen, die von Gruppe durch zufällig generierte Delta t
df = read.table(text = 'ID Day
101 0
101 0
101 1
300 40
300 40
270 32
270 35
100 1450
100 1450
100 1451
72 1490
72 1499', header = TRUE)
Unter der Annahme, dass jeder Day
obs ein reales Datum und die Zeitdauer reicht von Day
= 0 bis Day
repräsentiert = 1500, ich brauche jede ID
Gruppe durch eine zufällige Menge an Day
(delta t) zu verschieben, die spezifisch für jede Gruppe, und wenn der Wert Day
gibt 1500 beginnt erneut bei 0.
zB Gruppe 101 von 30 Tag, Gruppe 300 von 70, Gruppe 270 um 1000, Gruppe 100 von 100 und Gruppe 72 von 5
Hier ist meine gewünschte Ausgabe:
ID Day
101 30
101 30
101 31
300 110
300 110
270 1032
270 1035
100 1550
100 1550
100 1551
72 1495
72 3
anzumerken, dass die Verschiebung in Day
pro jede Gruppe muss zufällig sein.
Jede Hilfe würde wirklich geschätzt werden.
Dank
nicht sicher, ob ich es bekommen habe, aber mit 'data.table' Sie könnten versuchen,' setDT (df) [, Day_new: = (Tag + runif (uniqueN (ID), 0,1500)) %% 1500, by = ID] '. – nicola
Sorry, aber es funktioniert nicht, trotzdem danke – aaaaa
Ich glaube, der Trick ist, die Zufallszahlen zu jedem Tag innerhalb jeder Gruppe von IDs – aaaaa