将日期时间列拆分为 R 中的日期和时间变量
R 编程语言提供了多种处理日期和日期/时间数据的方法。内置框架 as.Date函数只负责处理日期,R 中的库 chron 处理日期和时间,不支持时区;而 POSIXct 和 POSIXlt 类提供对处理日期时间对象和时区的支持。可以将日期时间对象轻松转换为其他与日期相关的对象。
方法一:使用POSIXct对象
日期字符串可以首先转换为 POSIXct 对象,然后可以轻松地对其执行基本算术。 POSIXct 对象简化了数学运算的过程,因为它们依赖秒作为时间管理的主要单位。日期将转换为标准时区 UTC。可以使用 R 中的 as.POSIXct(date) 方法将字符串类型的日期对象转换为 POSIXct 对象。
Syntax:
as.POSIXct ( date , format)
Parameter :
date – The string date object
format – The format specifier of the date
日期对象存储为从 1970 年 1 月 1 日开始计算的天数,其中使用负数表示更早的日期。日期对象直接支持基本算术,其中整数直接从日期中添加或减去。 n 天数直接添加或减去,标准日期格式作为输出返回。 Date 对象还可以指定不同的格式来包含日期。 as.Date() 方法将字符串日期对象作为输入并将其转换为日期对象。
句法:
as.Date(character date object)
R 中的 format() 方法用于将指定的日期时间对象格式化为所需的格式。
句法:
format (datetime , fomat = )
例子:
R
# declaring a datetime vector
vec <- c("2021-05-08 08:32:07","2021-07-18 00:21:07",
"2020-11-28 23:32:09","2021-05-11 18:32:07")
# creating datetime column in the dataframe
data_frame <- data.frame(datetime = as.POSIXct(
vec, format = "%Y-%m-%d %H:%M:%S"))
print ("Original DataFrame")
print (data_frame)
# extracting time
data_frame$time <- format(as.POSIXct(
data_frame$datetime),format = "%H:%M:%S")
# extracting date
data_frame$date <- as.Date (data_frame$datetime)
print ("Modified DataFrame")
print (data_frame)
R
library("lubridate")
# declaring a datetime vector
vec <- c("2021-05-08 08:32:07","2021-07-18 00:21:07",
"2020-11-28 23:32:09","2021-05-11 18:32:07")
# creating datetime column in the dataframe
data_frame <- data.frame(datetime = ymd_hms(vec))
print ("Original DataFrame")
print (data_frame)
# extracting time
data_frame$time <- format(as.POSIXct(
data_frame$datetime),format = "%H:%M:%S")
# extracting date
data_frame$date <- as.Date (data_frame$datetime)
print ("Modified DataFrame")
print (data_frame)
输出
[1] "Original DataFrame"
datetime
1
2021-05-08 08:32:07
2
2021-07-18 00:21:07
3
2020-11-28 23:32:09
4
2021-05-11 18:32:07
[1] "Modified DataFrame"
datetime time date
1 2021-05-08 08:32:07 08:32:07 2021-05-08
2 2021-07-18 00:21:07 00:21:07 2021-07-17
3 2020-11-28 23:32:09 23:32:09 2020-11-28
4 2021-05-11 18:32:07 18:32:07 2021-05-11
方法 2 : 使用 lubridate 包
R 编程语言中的 Lubridate 包用于处理日期和时间对象。它使解析和操作对象变得更容易,并且需要安装并加载到工作空间中。
R 中的 Sys.time()函数用于根据 IST 区域获取当前日期和时间对象。 R 中的 hours() 方法用于输入一个表示小时数的整数。 “lubridate”包对象允许对其各种组件进行直接算术,因此可以直接从 lubridate 时间对象中减去小时数。结果也是属于这个类的对象。
Sys.Date()函数用于返回系统的日期。
Syntax: Sys.Date()
Parameters:
Does not accept any parameters
R 中的 ymd_hms() 方法用于将日期时间对象输入到工作空间中。
例子:
电阻
library("lubridate")
# declaring a datetime vector
vec <- c("2021-05-08 08:32:07","2021-07-18 00:21:07",
"2020-11-28 23:32:09","2021-05-11 18:32:07")
# creating datetime column in the dataframe
data_frame <- data.frame(datetime = ymd_hms(vec))
print ("Original DataFrame")
print (data_frame)
# extracting time
data_frame$time <- format(as.POSIXct(
data_frame$datetime),format = "%H:%M:%S")
# extracting date
data_frame$date <- as.Date (data_frame$datetime)
print ("Modified DataFrame")
print (data_frame)
输出
[1] "Original DataFrame"
datetime
1
2021-05-08 08:32:07
2
2021-07-18 00:21:07
3
2020-11-28 23:32:09
4
2021-05-11 18:32:07
[1] "Modified DataFrame"
datetime time date
1 2021-05-08 08:32:07 08:32:07 2021-05-08
2 2021-07-18 00:21:07 00:21:07 2021-07-17
3 2020-11-28 23:32:09 23:32:09 2020-11-28
4 2021-05-11 18:32:07 18:32:07 2021-05-11