所以我試圖按日期和時間對值進行排序。代碼和輸出如下所示:
> d=data.frame(
t=c('2021/7/10 9:40:06','2021/7/13 17:14:59',
'2021/7/8 17:54:41','2021/7/8 17:36:32'),
value=c(342,353,1431,624)
)
> d
t value
1 2021/7/10 9:40:06 342
2 2021/7/13 17:14:59 353
3 2021/7/8 17:54:41 1431
4 2021/7/8 17:36:32 624
> d[order(d$t),]
t value
1 2021/7/10 9:40:06 342
2 2021/7/13 17:14:59 353
4 2021/7/8 17:36:32 624
3 2021/7/8 17:54:41 1431
由于資料是按 t 升序排列的,我期望的應該是這樣的:
1 2021/7/8 17:36:32 624
2 2021/7/8 17:54:41 1431
3 2021/7/10 9:40:06 342
4 2021/7/13 17:14:59 353
請給我一些建議。非常感謝。
uj5u.com熱心網友回復:
library(dplyr)
library(lubridate)
d %>% mutate(new_t = as_datetime(t)) %>% arrange(desc(new_t))
或者
d %>% mutate(new_t = as_datetime(t)) %>% arrange(new_t)
uj5u.com熱心網友回復:
該列t是字符型別,將其更改為POSIXct然后您可以對資料進行排序。
在基礎 R -
d <- transform(d, t = as.POSIXct(t, format = '%Y/%m/%d %T'))
d[order(d$t), ]
使用dplyr和lubridate-
library(dplyr)
library(lubridate)
d %>%
mutate(t = ymd_hms(t)) %>%
arrange(t)
# t value
#1 2021-07-08 17:36:32 624
#2 2021-07-08 17:54:41 1431
#3 2021-07-10 09:40:06 342
#4 2021-07-13 17:14:59 353
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333081.html
