Voici un exemple de mon data.frame:lignes de décalage par groupe de delta généré aléatoire 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)
En supposant que chaque Day
obs représente une date réelle et que les plages de la période de temps de Day
= 0 à Day
= 1500, je besoin de changer chaque groupe ID
d'une quantité aléatoire de Day
(delta t), spécifique pour chaque groupe et si passe 1500 démarrage à nouveau la valeur de 0. Day
par exemple, groupe 101 par 30 jour, le groupe 300 par 70, le groupe 270 de 1000, le groupe 100 100 et le groupe 72 de 5
Voici ma souhaitée sortie:
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
On notera que le déplacement de Day
par chaque groupe doit être aléatoire.
Toute aide serait vraiment appréciée.
Merci
Je ne sais pas si je l'ai eu, mais avec 'data.table' vous pouvez essayer' setDT (df) [, Day_new: = (jour + runif (uniqueN (ID), 0,1500)) %% 1500, par = ID] '. – nicola
désolé mais cela ne fonctionne pas, merci quand même – aaaaa
Je crois que l'astuce consiste à ajouter les nombres aléatoires à chaque jour dans chaque groupe d'ID – aaaaa