如何在 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
我有一个看起来像这样的数据集:
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
数据:
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