Attribuer des numéros de jours consécutifs aux dates
JParkDS
La base de données avec laquelle je travaille comporte deux colonnes : 1) l'identifiant de la personne et 2) la date. J'essaie d'attribuer des valeurs de jour numériques de date pour chaque personne.
Par exemple, la personne 1 a une date du 01-01-2016 (référence) au 05-01-2016 (dernière date pour la personne 1). Je veux créer une colonne de jour qui se traduirait par 1, 2, 3, 4, 5. Si la personne 2 a une date du 13-01-2016 au 16-01-2016, la colonne du jour pour la personne 2 serait 1, 2, 3, 4.
df <- for(i in length(unique(per1$date))){df$day[per1$date[1] + i] <- i+1}
C'est essentiellement ce que j'essaie de faire, mais j'obtiens un message d'erreur disant:
"le remplacement a 17119 lignes, les données ont 1670"
S'il vous plaît laissez-moi savoir comment je peux écrire le code pour cela. Merci.
Hardik Gupta
tu peux utiliser ça
library(data.table)
## Create Data
df <- data.table(personID = c(1,1,1,2,2,2,2),
Date = c("2016-01-01", "2016-01-02", "2016-01-03", "2016-01-13", "2016-01-14", "2016-01-15", "2016-01-16"))
## Order the data according to date, per user
df <- df[order(Date), .SD, by = personID]
## Rank the date, within each personID group
df <- df[, Day:= 1:.N, .(personID)]
df
personID Date Day
1: 1 2016-01-01 1
2: 1 2016-01-02 2
3: 1 2016-01-03 3
4: 2 2016-01-13 1
5: 2 2016-01-14 2
6: 2 2016-01-15 3
7: 2 2016-01-16 4