J'ai une colonne avec les valeurs de date. J'essaie de marquer la date la plus récente que 1 et le plus récent - avant 2 heures et ainsi de suite. La sortie que je recherche est aussi ci-dessous : p> merci d'avance. p> p>
Ici, j'utilise dplyr code> pour y aller, mais après avoir exécuté le code, je reçois le résultat constant, car "1"
3 Réponses :
Pour résoudre le problème, convertissez les dates en une représentation entière, puis soustrayez le maximum. Soustraire 1L code> ajuste pour les valeurs de la sortie attendue. Puis convertir en valeurs absolues. df$day_no <- abs(as.integer(df$date) - max(as.integer(df$date)) - 1L)
df
# date day_no
#1 2020-01-20 5
#2 2020-01-21 4
#3 2020-01-22 3
#4 2020-01-23 2
#5 2020-01-24 1
Sinon, vous pouvez le transformer en un facteur, puis utiliser la représentation numérique du facteur. Date <- C ("2020-01-20", "2020-01-19", "2020-01-21" , "2020-01-22", "2020-01-23", "2020-01-24", "2020-01-22") code> AS.numérique (facteur (date) ) code>
Autre moyen consiste à utiliser vient de choisir celui qui fonctionne pour votre jeu de données. p> p> xxx_rank code> dans dplyr ou Rank code> dans la base r.
@Chrisruehlemann désolé je devrais indiquer clairement. Je veux dire qu'il existe de nombreuses variantes code> dans dplyr comme dense_rank code>, min_rank code>
Si j'étais un débutant avec R, xxx_rank code> serait totalement trompeur. En outre, vous mentionnez rang code> mais vous ne montrez pas comment l'utiliser.
Soyez prudent avec le rang si vous pouvez avoir des dates plus d'une fois dans vos données par exemple. date <- C ("2020-01-20", "2020-01-19", "2020-01-21", "2020-01-22", "2020-01-23", "2020-01-24", "2020-01-22") code>. Je pense que transformer le facteur est plus robuste dans de telles situations.
dans la base r, utilisez alternativement, si vous avez besoin de classement inversé, ajoutez class code>: - code> et convertissez des dates en numériques : p>