📜  将日期时间列拆分为 R 中的日期和时间变量

📅  最后修改于: 2022-05-13 01:55:46.706000             🧑  作者: Mango

将日期时间列拆分为 R 中的日期和时间变量

R 编程语言提供了多种处理日期和日期/时间数据的方法。内置框架 as.Date函数只负责处理日期,R 中的库 chron 处理日期和时间,不支持时区;而 POSIXct 和 POSIXlt 类提供对处理日期时间对象和时区的支持。可以将日期时间对象轻松转换为其他与日期相关的对象。

方法一:使用POSIXct对象

日期字符串可以首先转换为 POSIXct 对象,然后可以轻松地对其执行基本算术。 POSIXct 对象简化了数学运算的过程,因为它们依赖秒作为时间管理的主要单位。日期将转换为标准时区 UTC。可以使用 R 中的 as.POSIXct(date) 方法将字符串类型的日期对象转换为 POSIXct 对象。

日期对象存储为从 1970 年 1 月 1 日开始计算的天数,其中使用负数表示更早的日期。日期对象直接支持基本算术,其中整数直接从日期中添加或减去。 n 天数直接添加或减去,标准日期格式作为输出返回。 Date 对象还可以指定不同的格式来包含日期。 as.Date() 方法将字符串日期对象作为输入并将其转换为日期对象。

句法:

R 中的 format() 方法用于将指定的日期时间对象格式化为所需的格式。

句法:

例子:

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()函数用于返回系统的日期。

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