r - 无法在 R 中使用 cast 命令对数字列名进行排序
问题描述
我将列名作为时间戳,例如 0:00:00 1:00:00 10:00:00 11:00:00 12:00:00 13:00:00 14:00:00。
如您所见,时间戳 1:00:00 之后是 10:00:00 而不是 02:00:00。
通过挖掘这个主题,遇到了在数据框中对值进行排序的问题,并将值的数据类型转换为数字是解决方案。
我们如何将列名转换为数字并对列而不是数据进行排序?
解决方案
我制作了一个示例数据集来说明我的解决方案:使用lubridate
我们可以将 colnames 转换为时间格式,然后data.frame
相应地排序:
df <- structure(list(`0:00:00` = 1:9, `1:00:00` = 10:18, `10:00:00` = 19:27,
`11:00:00` = 28:36, `12:00:00` = 37:45, `13:00:00` = 46:54,
`14:00:00` = 55:63), .Names = c("0:00:00", "1:00:00", "10:00:00",
"11:00:00", "12:00:00", "13:00:00", "14:00:00"), class = "data.frame", row.names = c(NA,
-9L))
df2 <- structure(list(`0:00:00` = 1:9, `1:00:00` = 19:27, `10:00:00` = 28:36,
`11:00:00` = 10:18, `12:00:00` = 37:45, `13:00:00` = 46:54,
`14:00:00` = 55:63), .Names = c("0:00:00", "1:00:00", "10:00:00",
"11:00:00", "12:00:00", "13:00:00", "14:00:00"), class = "data.frame", row.names = c(NA,
-9L))
library(lubridate)
df <- df[,order(hms(names(df)))]
df2 <- df2[,order(hms(names(df2)))]
推荐阅读
- scala - Zio Zlayer 无法作为接口或实现返回
- apache-spark - 无法在 Yarn 集群模式下运行 Talend 作业
- flutter - 在颤振应用程序上接收来自树莓派摄像头的实时视频流
- .htaccess - 如何在禁止文件上正确应用 RewriteRule?
- typescript - 实时 i18n Vuejs 不会刷新下拉列表中的文本
- c - 通过堆栈在汇编和 C 函数之间传递 8 字节值
- java - Hazelcast Jet mapWithUpdating 是否保留数据局部性
- python - 将文本字段序列化为 json
- javascript - 如何在css上的这个javascript文本上添加-webkit-line-clamp?
- r - 计算子集化后顺序的id号