如何在 r 中转换日期和时间格式?

How to convert Date and time format in r?

我有一个看起来像这样的数据集:

Mno    Date and time      value
123 23-01-2021 08:03:04     23
234 23-01-2021 08:03:04     25
345 23-01-2021 08:03:04     26
456 23-01-2021 08:03:04     27

我只希望时间在00:00:00

Mno Date and time       value
123 23-01-2021 00:00:00  23
234 23-01-2021 00:00:00  25
345 23-01-2021 00:00:00  26
456 23-01-2021 00:00:00  27

提前致谢

您可以使用包 lubridate:

library(lubridate)
library(magrittr)


df$Date <- dmy_hms(df$Date) %>%
  as_date() %>%
  format.Date("%d-%m-%Y %H:%M:%S") 

  Mno                Date value
1 123 23-01-2021 00:00:00    23
2 234 23-01-2021 00:00:00    25
3 345 23-01-2021 00:00:00    26
4 456 23-01-2021 00:00:00    27

as_date 只保留日期,您在 format.Date

时用 00 重新格式化

数据:

df <- read.csv(text = "
Mno    ;Date      ;value
123   ;23-01-2021 08:03:04;     23
234   ;23-01-2021 08:03:04;     25
345   ;23-01-2021 08:03:04;     26
456   ;23-01-2021 08:03:04;     27",sep = ";")

使用lubridate:

yourdataframe$`Date and Time` <- update(yourdataframe$`Date and Time`,hour=0, minute=0, second=0)

它似乎只记住日期,但这是 PosiXct 的格式怪癖。

它将正确计算时间线。为了演示,如果我们将一个小时添加到日期时间,这将是日期时间向量:

yourdataframe$`Date and Time` <- yourdataframe$`Date and Time`+ hours(1)
yourdataframe$`Date and Time`
#[1] "2021-01-23 01:00:00 UTC"
#[2] "2021-01-23 01:00:00 UTC"
#[3] "2021-01-23 01:00:00 UTC"
#[4] "2021-01-23 01:00:00 UTC"

您可以使用 sub 通过正则表达式执行此操作 -

df$Date <- sub('\d+:\d+:\d+', '00:00:00', df$Date)
df

#  Mno                Date value
#1 123 23-01-2021 00:00:00    23
#2 234 23-01-2021 00:00:00    25
#3 345 23-01-2021 00:00:00    26
#4 456 23-01-2021 00:00:00    27