62 votes

Comment trier un cadre de données par date

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.

145voto

I82Much Points 13068

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.

31voto

Love-R Points 463

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)

18voto

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é.

4voto

Nitz Points 71

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

2voto

Cameron Tujen Points 29

Si vous voulez simplement réorganiser les dates du plus ancien au plus récent dans r etc. vous pouvez toujours le faire :

dataframe <- dataframe[nrow(dataframe):1,]

Cela m'a évité d'exporter depuis et vers Excel juste pour trier les données de Yahoo Finance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X