使用 lubridate 在 R 中处理日期和时间
日期和时间乍一看似乎很简单,因为我们在日常生活中都会处理它们。但是,当我们在 R 中处理日期和时间对象时,会涉及很多复杂性。
本文重点介绍如何使用 R 中的lubridate包处理日期和时间。您可以使用以下命令在 CRAN 的终端中本地安装此包:
install.packages("lubridate")
R 中的数据/时间对象类型
有三种类型的数据/时间对象,如下所示:
日期(<data>) 对象 - 打印日期。
时间(<time>) 对象 - 打印时间。
日期时间对象(<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 库中定义的各种函数的工作原理。我希望本教程确实有助于您学习数据科学。