У меня есть фрейм данных, который выглядит так (есть еще сотни строк)
hour magnitude tornadoCount hourlyTornadoCount Percentage Tornadoes
1: 01 AM 0 5 18 0.277777778
2: 01 AM 1 9 18 0.500000000
3: 01 AM 2 2 18 0.111111111
4: 01 AM 3 2 18 0.111111111
5: 01 PM 0 76 150 0.506666667
6: 01 PM 1 45 150 0.300000000
7: 01 PM 2 21 150 0.140000000
8: 01 PM 3 5 150 0.033333333
9: 01 PM 4 3 150 0.020000000
10: 02 AM 0 4 22 0.181818182
11: 02 AM 1 6 22 0.272727273
12: 02 AM 2 11 22 0.500000000
13: 02 AM 4 1 22 0.045454545
14: 02 PM 0 98 173 0.566473988
15: 02 PM 1 36 173 0.208092486
16: 02 PM 2 25 173 0.144508671
17: 02 PM 3 11 173 0.063583815
18: 02 PM 4 2 173 0.011560694
19: 02 PM 5 1 173 0.005780347
20: 03 AM 1 6 9 0.666666667
21: 03 AM 2 2 9 0.222222222
22: 03 AM 3 1 9 0.111111111
23: 03 PM 0 116 257 0.451361868
24: 03 PM 1 84 257 0.326848249
25: 03 PM 2 39 257 0.151750973
26: 03 PM 3 12 257 0.046692607
27: 03 PM 4 6 257 0.023346304
28: 04 AM 0 4 16 0.250000000
29: 04 AM 1 5 16 0.312500000
30: 04 AM 2 5 16 0.312500000
Я хочу реорганизовать это так, чтобы данные располагались в хронологическом порядке по столбцу «час». Есть ли способ сделать это? Спасибо!
Некоторое сходство, но не совсем. Я сортирую по 1 столбцу, но не знаю, как это сделать в этом случае. Если бы он был помечен 0-23, было бы проще, так как я мог бы просто использовать метод asc или desc. Однако я не знаю, как это сделать с такими значениями, как 01AM. Как можно дать команду, в которой они должны быть организованы с 01:00 до 12:00?
Не уверен, почему голос против, +1 просто для отмены.
Вам необходимо закодировать свои данные таким образом, чтобы R понимал, что hour
относится ко времени. Возможно, вы хотите проверить пакет lubridate
cran.r-project.org/web/packages/lubridate/vignettes/…
Вы можете разделить числовую часть hour
на числовой столбец, а затем расположить по этому
Вы можете преобразовать время в 24-часовой формат, используя синтаксический анализатор lubridate
(% I - это десятичный час (1-12), а% p - индикатор AM / PM), а затем отсортировать на основе этого, используя dpylr
и lubridate
:
library(dplyr)
library(lubridate)
ordered_df <- df %>%
mutate(hour_24 = parse_date_time(hour, '%I %p')) %>%
arrange(hour_24)
Возможный дубликат Как отсортировать фрейм данных по нескольким столбцам?