使用 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 库中定义的各种函数的工作原理。我希望本教程确实有助于您学习数据科学。

更新于: 2023 年 1 月 17 日

639 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告