Jak sortować ramkę danych według daty

Muszę posortować ramkę danych według daty w R. wszystkie daty są w formie "dd / mm / RRRR". Daty są w trzeciej kolumnie. Nagłówek kolumny to V3. Widziałem, jak sortować ramkę danych według kolumn i widziałem, jak przekonwertować łańcuch na wartość daty. Nie mogę połączyć tych dwóch, aby posortować ramkę danych według daty.

Author: Jaap, 2011-06-05

7 answers

Zakładając, że ramka danych ma nazwę d,

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

Przeczytaj mój post na blogu, sortowanie ramki danych według zawartości kolumny , jeśli to nie ma sensu.

 142
Author: I82Much,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-05 22:11:49

Obecnie jest to najbardziej wydajna i wygodna w użyciu biblioteka lubridate i dplyr.

lubridate zawiera szereg funkcji ułatwiających parsowanie dat do obiektów POSIXct lub Date. Tutaj używamy dmy, która automatycznie przetwarza daty w formatach Day, Month, Year. Gdy Twoje dane będą w formacie daty, możesz je sortować za pomocą dplyr::arrange (lub dowolnej innej funkcji Porządkowej) zgodnie z życzeniem:

d$V3 <- lubridate::dmy(d$V3)
dplyr::arrange(d, V3)
 30
Author: Love-R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-14 15:45:26

W przypadku, gdy chcesz sortować daty w porządku malejącym, znak minus nie działa z datami.

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

Można jednak uzyskać ten sam efekt za pomocą funkcji ogólnego przeznaczenia: rev (). Dlatego mieszasz rev i zamawiasz jak:

#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))),]
Mam nadzieję, że pomogło.
 16
Author: pommedeterresautee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 19:10:21

Możesz użyć funkcji order() do sortowania danych daty.

# 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"))),]

Mam nadzieję, że to pomoże,

Link do mojej odpowiedzi quora https://qr.ae/TWngCe

Thanks

 4
Author: Nitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-19 06:07:27

Jeśli chcesz zmienić daty od najstarszych do najnowszych w r itp. zawsze można:

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

To zapisał mi eksportowanie i out z Excela tylko do sortowania na danych Yahoo Finance.

 2
Author: Cameron Tujen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-03 17:43:31

Jedyny sposób, w jaki znalazłem pracę z godzinami, poprzez Amerykański format w źródle (mm-dd-yyyy 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
Author: Aurélien Prévot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-10 21:30:41

Jeśli masz zbiór danych o nazwie daily_data:

daily_data<-daily_data[order(as.Date(daily_data$date, format="%d/%m/%Y")),] 
 0
Author: SATYAJIT MAITRA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-11 13:23:24