r - 重新排序数据框的行
问题描述
我想将我的 dftime
列重新排序为04:00
从而不是从00:00
. 订单将是04:00
, 05:00
,..., 00:00
, 01:00
, 02:00
, 03:00
be 我该怎么做?
<-structure(list(time=c ("00:00", "01:00","02:00","03:00", "04:00", "05:00", "06:00", "07:00",
"08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00",
"19:00", "20:00", "21:00", "22:00", "23:00"),
Season = c(1, 2, 3, 5, 6, 7,8,9,10,12,1,1, 2, 3, 5, 6, 7,8,9,10,12,9,10,12),
Total= c(1, 2, 3, 5, 6, 7,8,9,10,12,1,1, 2, 3, 5, 6, 7,8,9,10,12,9,10,12 )
), row.names = c(NA,24L), class = "data.frame")
解决方案
您可以使用match
来查找 的索引'04:00'
:
inds <- match('04:00', df$time)
df[c(inds:nrow(df), 1:(inds - 1)), ]
# time Season Total
#5 04:00 6 6
#6 05:00 7 7
#7 06:00 8 8
#8 07:00 9 9
#9 08:00 10 10
#10 09:00 12 12
#11 10:00 1 1
#...
#...
#1 00:00 1 1
#2 01:00 2 2
#3 02:00 3 3
#4 03:00 5 5
这是另一个变体dplyr
:
library(dplyr)
df %>% arrange(row_number() < match('04:00', time))
推荐阅读
- node.js - 部署到 Google Appengine 时的 NPM 调试日志
- sql - Oracle - 按记录范围分组的最小值
- c++ - 我可以在c ++中将异质函数散列到undered_map吗
- azure-active-directory - 无法在 Microsoft Oauth 2.0 中获取访问令牌
- python - Pandas 数据框打印额外信息
- java - 用于监视客户端资源的 JSF Web 应用程序
- oracle - 获取当前登录的用户和sql中有效存储过程的数量
- vue.js - Vue中如何动态渲染字符串?
- .net - 使用 oldschool .NET 导出 CNG RSA 证书的私钥 (PKCS#8)
- java - 为什么我必须使用:classes:。-classpath 参数中的 jar 后的符号?