R语言 使用lubridate处理日期和时间
在我们的日常生活中,日期和时间给人的第一印象是简单和容易的,因为我们在日常生活中与它们打交道。但是,当我们在R中与日期和时间对象一起工作时,就会有很多复杂的问题。
本文主要介绍使用R语言中的lubridate包来处理日期和时间。
install.packages("lubridate")
R中的数据/时间对象的类型
有三种类型的数据/时间对象,列举如下
Date (<data>)
对象 – 打印日期。-
Time (<time>)
对象 – 打印时间。 -
Data-Time object (<dttm>)
– 它是数据和时间的结合。
示例
R为我们提供了today()函数,我们可以用它来获取当前的数据。比如说。
# Include library
library("lubridate")
# Print the current date
print(today())
输出
[1] "2022-12-13"
正如你在输出中看到的,当前的日期已经显示出来了。
示例
R为我们提供的now()函数也可以打印出一个数据时间对象。让我们考虑下面的例子。
# Print the current date-time object
print(now())
输出
[1] "2022-12-13 16:25:31 IST"
正如你在输出中看到的,当前的日期和时间已经显示出来了。
使用一个字符串创建日期
lubridate库为我们提供了一些辅助函数,使用这些函数可以轻松地创建一个日期对象。这些函数在传递的字符串中的组件(DD, MM, YY)的排列方面彼此不同。让我们逐一讨论这些函数。
使用ymd()函数
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式的。YY MM DD。
示例
library("lubridate")
# Print the date in YY-MM-DD format
# Passed as YY-MM-DD in the string
ymd("2022-01-31")
输出
[1] "2022-01-31"
正如你在输出中看到的,日期被打印成YY-MM-DD格式。
使用mdy()函数
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。MM-DD-YY
示例
library("lubridate")
# Print the date in YY-MM-DD format
# Passed as MM-DD-YY in the string
mdy("01-31-2022")
输出
[1] "2022-01-31"
正如你在输出中所看到的,日期已被打印成YY-MM-DD格式。
使用dmy()函数
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式的。DD MM YY。
示例
library("lubridate")
# Print the date in YY-MM-DD format
# Passed as DD-MM-YY in the string
dmy("31-01-2022")
输出
[1] "2022-01-31"
正如你在输出中看到的,日期被打印成YY-MM-DD格式。
使用一个字符串创建日期-时间
lubridate库为我们提供了其他辅助函数,使用这些函数我们可以轻松地创建一个日期时间对象。这些函数在传递的字符串中的组件(DD, MM, YY和HH, MM, SS)的安排方面彼此不同。让我们逐一讨论这些函数。
ymd_hms(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。yy-mm-dd hh:mm:ss。
示例
# Include library
library("lubridate")
# Print the date-time in YY-MM-DD HH:MM:SS
# Passed as YY-MM-DD HH:MM:SS in the string
ymd_hms("2022-01-31 22:10:10")
输出
[1] "2022-01-31 22:10:10 UTC"
正如你在输出中看到的,日期已被打印为YY-MM-DD HH:MM:SS格式。
ymd_hm(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。yy-mm-dd hh:mm。
示例
# Include library
library("lubridate")
# Print the date-time in YY-MM-DD HH:MM
# Passed as YY-MM-DD HH:MM in the string
ymd_hm("2022-01-31 22:10")
输出
[1] "2022-01-31 22:10:00 UTC"
正如你在输出中所看到的,日期已被打印成YY-MM-DD HH:MM格式。
mdy_hms(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。MM DD YY
示例
# Include library
library("lubridate")
# Print the date-time in YY-MM-DD HH:MM:SS
# Passed as YY-MM-DD HH:MM:SS in the string
mdy_hms("01-31-2022 22:10:10")
输出
[1] "2022-01-31 22:10:10 UTC"
正如你在输出中看到的,日期被打印成MM-DD-YY HH:MM:SS格式。
mdy_hm(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。MM-DD-YY HH:MM
示例
# Include library
library("lubridate")
# Print the date-time in YY-MM-DD HH:MM
# Passed as YY-MM-DD HH:MM in the string
mdy_hm("01-31-2022 22:10")
输出
[1] "2022-01-31 22:10:00 UTC"
正如你在输出中看到的,日期被打印成MM-DD-YY HH:MM格式。
dmy_hms(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。dd-mm-yy hh:mm:ss。
示例
# Include library
library("lubridate")
# Print the date-time in DD-MM-YY HH:MM:SS
# Passed as DD-MM-YY HH:MM:SS in the string
dmy_hms("31-01-2022 22:10:10")
输出
[1] "2022-01-31 22:10:10 UTC"
正如你在输出中看到的,日期已被打印成DD-MM-YY HH:MM:SS格式。
dmy_hm(date_time_string)
这个函数接受一个字符串作为输入,但要注意,所传递的字符串的成分必须是格式。dd-mm-yy hh:mm:ss。
示例
# Include library
library("lubridate")
# Print the date-time in DD-MM-YY HH:MM
# Passed as DD-MM-YY HH:MM in the string
dmy_hms("31-01-2022 22:10")
输出
[1] "2020-01-31 22:22:10 UTC"
正如你在输出中看到的,日期被打印为DD-MM-YY HH:MM格式。
获取数据/时间的各个组成部分
lubridate为我们提供了一些函数,使用这些函数我们可以从一个日期对象中拉出一个特定的组件。例如,月份、月份的日期、年份等。以下函数用于提取一个特定的组件—-。
函数 | 描述 |
---|---|
year() | 从一个日期或日期时间对象中提取年份。 |
month() | 从一个日期或日期时间对象中调出月份。 |
mday() | 从一个日期或日期时间对象中调出月份的日期 |
yday() | 从一个数据或日期时间对象中提取当年的日期。 |
wday() | 从一个数据或日期时间对象中提取一周的日期。 |
示例
现在让我们看看这些函数的工作情况–
# Include library
library("lubridate")
# Create a date-time object in DD-MM-YY HH:MM:SS
# From a string passed in the format: DD-MM-YY HH:MM:SS
dateTime <- ymd_hms("2022-01-31 22:10:10")
# Print the year
print(paste("The year is equal to", year(dateTime)))
输出
[1] "The day of the year is equal to 31"
打印该月 –
print(paste("The month is equal to", month(dateTime)))
输出
[1] "The month is equal to 1"
打印月日-
print(paste("The day of the month is equal to", mday(dateTime)))
输出
[1] "The day of the month is equal to 31"
打印年月日-
print(paste("The day of the year is equal to", yday(dateTime)))
输出
[1] "The day of the year is equal to 31"
打印年月日-
print(paste("The day of the year is equal to", yday(dateTime)))
输出
[1] "The day of the year is equal to 31"
打印一周的日子
print(paste("The weekday is equal to", wday(dateTime)))
输出
[1] "The weekday is equal to 2"
结论
在本教程中,我们讨论了在R中处理日期和时间的问题。我们看到了在lubridate库中定义的各种函数的工作。我希望本教程能对你的数据科学学习有所帮助。