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.
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.
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)
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é.
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), ]
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.
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