如您所见,我有两列(stop_id和到达时间)。我必须编写代码(可能是for循环),以对同一arrival_time
的{{1}}的值进行排序。例如,如您所见,对于stop_id
,我有三个stop_id = 12893
值,它们不是按升序排列的。这些是:
arrival_time
我无法手动执行此操作,因为我有大约11,000个唯一的5:49:49;
20:34:07; and
18:51:13
。预先感谢。
stop_id values
答案 0 :(得分:0)
您可以使用软件包dplyr
。
例如:
dplyr::arrange(dataframe, stop_id, arrival_time)
答案 1 :(得分:0)
通常来说,您应该将arrival_time
列转换为知道时间的适当类,例如times
包中的chron
类。不幸的是,您的时代不正常,因为您的时间23:59:59
之外,因此标准的times
类将无法正常工作。
相反,我们将列分为小时,分钟和秒,然后对它们进行排序:
library(tidyr)
res = separate(df, col = arrival_time, into = c("h", "m", "s"), remove = FALSE, convert = TRUE)
res = with(res, res[order(stop_id, h, m, s), ])
res
# stop_id arrival_time h m s
# 1 12893 5:19:49 5 19 49
# 12 12893 5:49:49 5 49 49
# 2 12893 6:20:31 6 20 31
# 3 12893 6:50:31 6 50 31
# 4 12893 7:20:31 7 20 31
# 5 12893 7:50:31 7 50 31
# 6 12893 8:20:31 8 20 31
# 7 12893 8:50:31 8 50 31
# 8 12893 9:04:49 9 4 49
# 9 12893 10:04:49 10 4 49
# 10 12893 11:04:49 11 4 49
# 11 12893 12:04:49 12 4 49
# 13 12893 13:04:49 13 4 49
# ...