Je suis en train de faire du nettoyage/formatage de données et j'aimerais ajouter un identifiant unique à chaque enregistrement par nom et ensuite par date. Par exemple, "Bob" peut avoir quatre dates d'enregistrement, dont deux sont identiques. Dans ce cas, je souhaite lui attribuer trois numéros d'identification différents (séquentiels).
Voici ce qui se rapproche le plus du résultat souhaité :
Un exemple d'ensemble de données que j'ai créé :
tst <- data_frame(
name = c("Bob", "Sam", "Roger", "Stacy", "Roger", "Roger", "Sam", "Bob", "Sam", "Stacy", "Bob", "Stacy", "Roger", "Bob"),
date = as.Date(c("2009-07-03", "2010-08-12", "2009-07-03", "2016-04-01", "2002-01-03", "2019-02-10", "2005-04-17", "2009-07-03", "2010-09-21", "2012-11-12", "2015-12-31", "2014-10-10", "2015-06-02", "2003-08-21")),
amount = round(runif(14, 0, 100), 2)
)
Générer un check_in_number
variable...
tst2 <- tst %>%
arrange(date) %>%
group_by(name, date) %>%
mutate(check_in_number = row_number())
La ligne ci-dessus génère check_in_number
pour Bob en tant que 1
, 1
, 2
, 1
dans cet ordre. Je souhaiterais plutôt que le résultat soit 1
, 2
, 2
, 3
. En d'autres termes. J'aimerais que les enregistrements effectués à la même date soient considérés comme un seul enregistrement.
Est-ce possible avec tidyverse ? Ai-je oublié une méthode simple pour cela ?
Il y a une question similaire ici, mais je la laisse ici parce que le problème que j'avais impliquait une variable de date ordonnée sur laquelle j'arrangeais les données. En d'autres termes, mes données exigeaient que ma nouvelle variable soit consécutive.
Comment numéroter/étiqueter un tableau de données par numéro de groupe à partir de group_by ?