如何使用 POSIXct 将日期和时间转换为数字以及如何计算时间?

How to convert date & time to numeric by using POSIXct and how to calculate the time?

嗨,朋友们,这两列(starttime/stoptime)都在字符 class 中,我如何转换为数字(POSIXct)以查找时间消耗,谢谢

开始时间
2015 年 12 月 31 日 23:48
2015 年 12 月 31 日 23:47
2015 年 12 月 31 日 23:37
2015 年 12 月 31 日 23:37

停止时间
2015 年 12 月 31 日 23:51
2015 年 12 月 31 日 23:53
2015 年 12 月 31 日 23:43
2016 年 1 月 1 日 0:02

lubridate 包中的函数 parse_date_time 是一种处理时间的简洁方法。操作方法如下:

library(tidyverse)
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#> 
#>     date, intersect, setdiff, union
tribble(
  ~starttime, ~stoptime,
  "12/31/2015 23:48", "12/31/2015 23:51",
  "12/31/2015 23:47", "12/31/2015 23:53"
) %>%
  mutate(
    starttime = starttime %>% parse_date_time("%m/%d/%y %H:%M"),
    stoptime = stoptime %>% parse_date_time("%m/%d/%y %H:%M"),
    duration = stoptime - starttime
  )
#> # A tibble: 2 x 3
#>   starttime           stoptime            duration
#>   <dttm>              <dttm>              <drtn>  
#> 1 2015-12-31 23:48:00 2015-12-31 23:51:00 3 mins  
#> 2 2015-12-31 23:47:00 2015-12-31 23:53:00 6 mins

reprex package (v2.0.0)

于 2021-09-09 创建

此外,您还可以使用 lubridate -

中的 mdy_hm 函数
library(dplyr)
library(lubridate)

df <- df %>% mutate(across(c(starttime, stoptime), mdy_hm))

在基础 R 中,您可以使用 as.POSIXct

df[1:2] <- lapply(df[1:2], as.POSIXct, format = "%m/%d/%Y %H:%M")