r - 基于列值重新排序数据框的自定义
问题描述
我有一个看起来像这样的数据框(还有数百行)
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
我想重新组织它,以便根据“小时”列按时间顺序排列数据。有没有办法做到这一点?谢谢!
解决方案
您可以使用解析器转换为基于 24 小时的时间lubridate
(%I 是十进制小时 (1-12),%p 是 AM/PM 指示符),然后使用dpylr
and进行排序lubridate
:
library(dplyr)
library(lubridate)
ordered_df <- df %>%
mutate(hour_24 = parse_date_time(hour, '%I %p')) %>%
arrange(hour_24)
推荐阅读
- c# - 如何在保存之前附加新实体?
- php - Laravel UpdateOrCreate 在更新时创建不同的值
- python - 在 Json 数组中查找键的值 - Python
- mysql - 如何在 sql 的 case 语句中执行计算并将其显示为带有其他值的注释?
- java - 如何在带有图像的列表视图中的自定义适配器中添加搜索过滤器?
- r - 从 gtsummary 包中省略 tbl_regression 中的协变量
- mongodb - 在 MongoDB 嵌套数组中查找空值或零值
- python - 将文件名的一部分保存在单独的 panda df 列中
- regex - 如何制作合适的面膜?
- css - 为什么图像没有设置为背景?使用 ::之前