web-dev-qa-db-fra.com

Comment trier une trame de données par date

Je dois trier une trame de données par date dans R. Les dates sont toutes sous la forme de "jj/mm/aaaa". Les dates sont dans la 3ème colonne. L'en-tête de colonne est V3. J'ai vu comment trier un cadre de données par colonne et comment convertir la chaîne en valeur de date. Je ne peux pas combiner les deux pour trier le bloc de données par date.

45
John

En supposant que votre cadre de données s'appelle d,

d[order(as.Date(d$V3, format="%d/%m/%Y")),]

Lisez mon billet de blog, Trier un bloc de données en fonction du contenu d'une colonne , si cela n'a aucun sens.

113
I82Much

De nos jours, c’est la bibliothèque la plus efficace et la plus confortable à utiliser.

lubridate contient un certain nombre de fonctions qui facilitent l'analyse de dates dans les objets POSIXct ou Date. Ici, nous utilisons dmy qui analyse automatiquement les dates dans Day, Month, Year formats. Une fois que vos données sont au format date, vous pouvez les trier avec dplyr::arrange (ou toute autre fonction de classement) comme vous le souhaitez:

d$V3 <- lubridate::dmy(d$V3)
dplyr::arrange(d, V3)
22
Love-R

Si vous souhaitez trier les dates en ordre décroissant, le signe moins ne fonctionne pas avec les dates.

out <- DF[rev(order(as.Date(DF$end))),]

Cependant, vous pouvez avoir le même effet avec une fonction générique: rev (). Par conséquent, vous mélangez rev et order comme ceci:

#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 a aidé.

15
pommedeterresautee

La seule façon que j'ai trouvée de travailler avec des heures, via un format américain en source (mm-jj-aaaa HH-MM-SS PM/AM) ...

df_dataSet$time <- as.POSIXct( df_dataSet$time , format = "%m/%d/%Y %I:%M:%S %p" , tz = "GMT")
class(df_dataSet$time)
df_dataSet <- df_dataSet[do.call(order, df_dataSet), ] 
2
Aurélien Prévot

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

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

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

2
Cameron Tujen

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 t'aides,

Lien vers ma réponse à quora https://qr.ae/TWngCe

Merci

1
Nitz