如何在 r 中将日期转换为数字(带有示例)
在 R 中,可以使用两种方法将日期值转换为数值:
方法1:使用as.numeric()
as. numeric (my_date)
这将返回日期对象与 1/1/1970 之间经过的秒数。
方法2:使用lubridate包函数
library (lubridate) #get seconds value in date object second(my_date) #get minutes value in date object minute(my_date) ... #get year value in date object year(my_date)
这将返回秒、分钟、年等的值。您的日期对象。
以下示例展示了如何在实践中使用每种方法。
方法1:使用as.numeric()
以下代码显示如何使用as.numeric()函数将日期对象转换为数字:
#create date object
my_date <- as. POSIXct ("10/14/2021 5:35:00 PM", format="%m/%d/%Y %H:%M:%S %p")
#view date object
my_date
[1] "2021-10-14 05:35:00 UTC"
#convert date object to number of seconds since 1/1/1970
as. numeric (my_date)
[1] 1634189700
#convert date object to number of days since 1/1/1970
as. numeric (my_date) / 86400
[1] 18914.23
#convert date object to number of years since 1/1/1970
as. numeric (my_date) / 86400 / 365
[1] 51.81982
根据结果我们可以看到:
- 我们的日期对象与 1/1/1970 之间存在1,634,189,700 秒的差异。
- 我们的日期对象与 1/1/1970 之间存在18,914.23 天的差异。
- 我们的日期对象与 1/1/1970 之间存在51.81982 年的差异。
方法2:使用lubridate包函数
以下代码显示如何使用 R 中lubridate包中的函数将日期对象转换为数字:
library (lubridate)
#create date object
my_date <- as. POSIXct ("10/14/2021 5:35:00 PM", format="%m/%d/%Y %H:%M:%S %p")
#view date object
my_date
[1] "2021-10-14 05:35:00 UTC"
#extract various numerical values from date object
second(my_date)
[1] 0
minute(my_date)
[1] 35
hour(my_date)
[1] 5
day(my_date)
[1] 14
month(my_date)
[1] 10
year(my_date)
[1] 2021
使用这些函数,我们可以从日期对象中提取秒、分钟、小时、天、月和年的值。
请参阅此在线备忘单,以全面了解 Lubridate 包中最常用的功能。
其他资源
以下教程解释了如何在 R 中执行其他常见转换: