R语言 如何为一个日期时间加减时间跨度
R中的时间对象可以使用POSIXct类来声明,它提供了对这些对象的快速操作和存储。R中的外部包也有助于处理时间和日期,并允许对它们进行比较和直接算术操作。在这篇文章中,我们将看到如何在R编程中对DateTime进行时间跨度的加减。
方法1:使用POSIXct对象
一个日期字符串可以首先被转换为POSIXct对象,然后可以很容易地对其进行基本的算术运算。POSIXct对象简化了数学运算的过程,因为它们依赖于秒作为时间管理的主要单位。日期被转换为标准的时区,即UTC。一个字符串类型的日期对象可以转换为POSIXct对象,使用它们作为R中的.POSIXct(date)方法。数学运算符可以直接用于向属于POSIXct类的日期对象添加各种时间成分。
1 hour = 1 * 60 * 60 seconds
1 min = 1 * 60 seconds
语法: as.POSIXct ( date , format)
参数:
date – 字符串日期对象
format – 日期的格式指定器
代码 。
# declaring a datetime object
time1 <- as.POSIXct("2021-05-08 08:32:07",
format = "%Y-%m-%d %H:%M:%S")
print ("Original DateTime")
print (time1)
# adding 20 mins to datetime
mins <- 20 * 60
print ("Adding 20 mins to DateTime")
print (time1 + mins)
# converting 3 hours to seconds
hrs <- 3 * 60 * 60
print ("Subtracting 3 hours from DateTime")
# subtracting 3 hours from the
# date time object
print (time1 - hrs)
输出 。
[1] "Original DateTime"
[1] "2021-05-08 08:32:07 UTC"
[1] "Adding 20 mins to DateTime"
[1] "2021-05-08 08:52:07 UTC"
[1] "Subtracting 3 hours from DateTime"
[1] "2021-05-08 05:32:07 UTC"
方法2:使用lubridate包
R中的Lubridate包是用来处理日期和时间对象的。它使解析和处理这些对象更加容易,需要通过以下命令安装并加载到工作空间。
install.packages("lubridate")
R中的Sys.time()函数是用来根据IST区获取当前的日期和时间对象。 R语言中的hours()方法用于接受一个表示小时数的整数的输入。lubridate “包对象允许对其各个组成部分进行直接算术,因此,小时数可以直接从 lubridate 时间对象中减去。一个结果也是属于这个类的对象。
代码 。
# getting required libraries
library(lubridate)
# getting current time
time <- Sys.time()
print("Current time")
print (time)
# subtracting hours
hrs <- hours(5)
print ("Subtracting 5 hours")
mod_time <- time - hrs
print (mod_time)
secs <- seconds(17)
print ("Adding 17 seconds")
mod_time <- time + secs
print (mod_time)
输出
[1] "Current time"
[1] "2021-05-22 03:27:02 IST"
[1] "Subtracting 5 hours"
[1] "2021-05-21 22:27:02 IST"
[1] "Adding 17 seconds"
[1] "2021-05-22 03:27:19 IST"
方法3:使用strptime()方法
R中的strptime方法用于直接将字符向量(各种格式)转换成POSIXlt格式。strptime比之前的方法更快,因为strptime只处理字符输入。
语法: strptime(date, format, tz = “”)
参数:
date – 字符格式的日期
format – 输入日期的格式指定符
tz – 时区(可选)
strptime()的工作原理与POSIXct对象类似,所有的计算都是以秒为单位进行的。
代码 。
# declaring a time object
time1 <- strptime("2021-07-07 00:32:07",
format = "%Y-%m-%d %H:%M:%S")
print ("Time")
print (time1)
# converting 5 hours to seconds
hrs <- 5 * 60 * 60
print ("Subtracting 5 hours")
print (time1 - hrs)
# adding 48 seconds and 24 mins
mins <- 24 * 60
secs <- 48 * 60 * 60
print ("Modified Time")
print ((time1 + mins) - secs)
输出 。
[1] "Time"
[1] "2021-07-07 00:32:07 UTC"
[1] "Subtracting 5 hours"
[1] "2021-07-06 19:32:07 UTC"
[1] "Modified Time"
[1] "2021-07-05 00:56:07 UTC"
解释: 减去5小时后,返回上一个日期。在第二种情况下,计算出相应的分和秒的数量。