R:使用非常规日期列在 split() 命令后重新排序数据

R: reorder data after split() command using unconventional date column

为了更轻松地进行数据操作,我在 R 中有一个数据框,其中包含一个日期和小时值列,如下所示:6 月 5 日 23 日。"june 5" 是月份(不包括年份),并且“23”是小时(包括分钟和秒会在以后的数据操作中引起问题。)我使用以下命令成功地将这个大数据框按日期和小时拆分为几个较小的数据框:

dat<-split(df,with(df, df_datehour),drop=FALSE)

但是,正如预期的那样,split 按字典顺序对我的数据进行了排序,因此它被组织为 4 月 --> 6 月 --> 5 月,而不是 4 月 --> 5 月 --> 6 月。我试图通过使用我在网上找到的修复程序来处理这个问题,该修复程序是使用 as.Date() 转换我的日期列。不过,它似乎没有用。我正在使用以下代码行转换为日期:

dat<-split(df,as.Date(with(df, df_datehour),format="%B %d %H"),drop=FALSE)

这行代码确实设法按月和日对数据进行排序,但它完全舍弃了小时,正如您从我的结果片段中看到的那样:

labels(dat)
[57] "2015-06-05"

有人知道这个问题的解决方法吗?

将名称转换为时间格式,按索引重新排序和重新排序列表。

dat[order(strptime(names(dat), "%B %d %H"))]