R语言 创建72小时内以45分钟为增量的小时:分钟序列

yiytaume  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(137)

我想在一个 Dataframe 中创建一列,从00:00:00开始,加上45分钟,得到72小时。我不想序列每24小时重置一次,而是每经过一段时间。
结果应如下所示:

00:00:00
00:45:00
01:30:00
...
23:15:00
24:00:00
24:45:00
...
71:15:00
72:00:00

我试过这个,但是每隔24小时,时间就会重置为00:00:00,时间又重新开始而不是加起来。

heure_depart <- as.POSIXct("00:00:00", format = "%T")
duree_totale <- as.difftime(72, unit = "hours")
heure_arrivee <- heure_depart + duree_totale
temps <- seq(heure_depart, heure_arrivee, by = "45 min")
df <- data.frame(temps = format(temps, format = "%H:%M:%S"))
df
hmae6n7t

hmae6n7t1#

这样行吗?

sequence_in_seconds <- seq(0, 72*60*60, 45*60)
hms::new_hms(sequence_in_seconds)
00:00:00
00:45:00
01:30:00
02:15:00
03:00:00
03:45:00
04:30:00
05:15:00
...
66:00:00
66:45:00
67:30:00
68:15:00
69:00:00
69:45:00
70:30:00
71:15:00
72:00:00
tvokkenx

tvokkenx2#

最后一列的格式还需要再修改一些,但这里有一个很好的起点:

library(lubridate)

seq <- seq(from = as.POSIXct("00:00:00", format = "%T"), 
    to = as.POSIXct("00:00:00", format = "%T") + 72*60*60, 
    by = "45 mins")

seq_min <- min(seq)

tibble(
  seq = seq, 
  start = seq_min, 
  interval = interval(start, seq) %>% as.duration(),
  format = interval %>% seconds_to_period() %>% format(format = "%H:%M:%S")
) %>% 
  print(n=1000)

这将显示如下内容:

# A tibble: 97 × 4
   seq                 start               interval             format   
   <dttm>              <dttm>              <Duration>           <Period> 
 1 2023-03-15 00:00:00 2023-03-15 00:00:00 0s                   0S       
 2 2023-03-15 00:45:00 2023-03-15 00:00:00 2700s (~45 minutes)  45M 0S   
 3 2023-03-15 01:30:00 2023-03-15 00:00:00 5400s (~1.5 hours)   1H 30M 0S
 4 2023-03-15 02:15:00 2023-03-15 00:00:00 8100s (~2.25 hours)  2H 15M 0S
 5 2023-03-15 03:00:00 2023-03-15 00:00:00 10800s (~3 hours)    3H 0M 0S 
...
93 2023-03-17 21:00:00 2023-03-15 00:00:00 248400s (~2.88 days)  2d 21H 0M 0S 
94 2023-03-17 21:45:00 2023-03-15 00:00:00 251100s (~2.91 days)  2d 21H 45M 0S
95 2023-03-17 22:30:00 2023-03-15 00:00:00 253800s (~2.94 days)  2d 22H 30M 0S
96 2023-03-17 23:15:00 2023-03-15 00:00:00 256500s (~2.97 days)  2d 23H 15M 0S
97 2023-03-18 00:00:00 2023-03-15 00:00:00 259200s (~3 days)     3d 0H 0M 0S

相关问题