J'ai besoin de trier un cadre de données par date dans R. Les dates sont toutes sous la forme "jj/mm/aaaa". Elles se trouvent dans la troisième colonne. L'en-tête de la colonne est V3. J'ai vu comment trier un cadre de données par colonne et j'ai vu comment convertir la chaîne en une valeur de date. Je n'arrive pas à combiner les deux pour trier le cadre de données par date.
Réponses
Trop de publicités?En supposant que votre cadre de données est nommé d
,
d[order(as.Date(d$V3, format="%d/%m/%Y")),]
Lisez mon article de blog, Tri d'un cadre de données en fonction du contenu d'une colonne si ça n'a pas de sens.
Aujourd'hui, il est plus efficace et confortable d'utiliser les bibliothèques lubridate et dplyr.
lubridate
contient un certain nombre de fonctions qui rendent l'analyse des dates en POSIXct
o Date
objets faciles. Ici, nous utilisons dmy
qui analyse automatiquement les dates dans Day, Month, Year
formats. Une fois que vos données sont dans un format de date, vous pouvez les trier avec dplyr::arrange
(ou toute autre fonction de commande) comme vous le souhaitez :
d$V3 <- lubridate::dmy(d$V3)
dplyr::arrange(d, V3)
Si vous voulez trier les dates par ordre décroissant, le signe moins ne fonctionne pas avec les dates.
out <- DF[rev(order(as.Date(DF$end))),]
Cependant, vous pouvez obtenir le même effet avec une fonction d'usage général : rev(). Par conséquent, vous mélangez rev et order comme :
#init data
DF <- data.frame(ID=c('ID3', 'ID2','ID1'), end=c('4/1/09 12:00', '6/1/10 14:20', '1/1/11 11:10')
#change order
out <- DF[rev(order(as.Date(DF$end))),]
J'espère que ça vous a aidé.
Vous pouvez utiliser order() pour trier les données de date.
# Sort date ascending order
d[order(as.Date(d$V3, format = "%d/%m/%Y")),]
# Sort date descending order
d[rev(order(as.Date(d$V3, format = "%d/%m/%y"))),]
J'espère que cela vous aidera,
Lien vers ma réponse sur Quora https://qr.ae/TWngCe
Merci