我們在 R 資料框中有一列,看起來像下面的資料框,我們希望按這些值對資料框進行排序:
zed = data.frame(start_time = c("12:10 PM", "10:10 PM", "01:15 PM", "03:10 PM", "03:37 PM", "03:40 PM",
"06:05 PM", "06:40 AM", "07:05 PM", "07:05 PM", "07:07 PM", "07:10 PM",
"07:10 PM", "08:05 PM", "08:05 PM", "08:10 PM", "01:10 PM", "01:10 PM",
"01:15 PM", "03:10 AM", "03:37 PM", "03:40 PM", "06:05 PM", "06:40 PM",
"07:05 PM", "07:05 PM", "07:07 AM", "07:10 AM", "07:10 PM", "08:05 PM",
"08:05 AM", "09:10 AM"), stringsAsFactors = FALSE)
> head(zed)
start_time
1 12:10 PM
2 10:10 PM
3 01:15 PM
4 03:10 PM
5 03:37 PM
6 03:40 PM
12:00 AM 是最早/最晚的時間。在下面的示例中,03:10 AM將是第一個值并且10:10 PM將是最后一個值。這可以在 R 中使用 dplyr/tidyverse 實作嗎?如果我們可以對字串進行排序或將數字排序為整數,我們不一定需要將它們轉換為日期時間型別。如果我們可以將此列轉換為更易于排序的另一列,那就太好了。
uj5u.com熱心網友回復:
轉換為日期時間然后排序更容易。沒有理由重新發明輪子。
基地 R。
zed[order(as.POSIXct(zed$start_time, "%I:%M %p", tz="")), ]
dplyr
library(dplyr)
zed %>% arrange(as.POSIXct(start_time, "%I:%M %p", tz=""))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485218.html
上一篇:Java 書城專案本地部署指引
