R语言学习:日期和时间相关知识
2022年第04周。
这一周R语言学习,记录如下。
01
日期和时间
1.1 获取当前日期和时间
我们先获知下当前日期和时间。
Sys.Date()
和today()
返回当前日期。Sys.time()
和now()
返回日期、时间和时区。在now()
中,通过参数tzone
指定时区。
举例说明
# 当前日期
Sys.Date()
lubridate::today()
# 当前时间
Sys.time()
lubridate::now()
lubridate::now(tzone = "UTC")
1.2 日期一些检查操作
am()
和pm()
检查日期和时间是否上午还是下午。leap_year()
检查年份是否闰年。
# 检查是否上午和下午
lubridate::am(lubridate::now())
lubridate::pm(lubridate::now())
# 检查是否闰年
lubridate::leap_year(lubridate::now())
小结
函数 | 作用 |
---|---|
Sys.Date() |
当前日期 |
lubridate::today() |
当前日期 |
Sys.time() |
当前时间 |
lubridate::now() |
当前时间 |
lubridate::am() |
检查时间是否在上午? |
lubridate::pm() |
检查时间否在在下午? |
lubridate::leap_year() |
检查年份是否是闰年? |
02
日期和时间类型
解决两个问题。
-
1 如何创建日期和时间类型?
-
2 如何把其它类型转换为日期和时间类型?
使用as.Date()
或者lubridate::as_date()
创建日期。
举例说明
release_date <- as.Date("2021-11-11")
release_date
release_date <- lubridate::as_date("2021-11-11")
release_date
使用as.Date()
把字符串、数值、因子转换为日期类型。
举例说明
as.Date(18242, origin = "1970-01-01")
03
ISO 8601
使用ISOdate()
创建ISO 8601
标准的日期和时间。ISO 8601
标准的日期和时间,如下图。
举例说明
ISOdate(year = 2019,
month = 12,
day = 12,
hour = 8,
min = 5,
sec = 3,
tz = "UTC")
04
POSIX
POSIX
表示 Portable Operating System Interface
.
4.1 POSIXct
POSIXct
表示自1970年(UTC)开始的秒数,ct
表示日历时间。
release_date <- as.POSIXct("2021-12-12 08:05:03")
class(release_date)
unclass(release_date)
4.2 POSIXlt
POSIXlt
表示列表中的以下信息。
-
seconds
-
minutes
-
hour
-
day of the month
-
month
-
year
-
day of week
-
day of year
-
daylight saving time flag
-
time zone
-
offset in seconds from GMT
POSIXlt
的lt
表示local time
。
release_date <- as.POSIXlt("2021-12-12 08:05:03")
release_date
使用unclass
或者unlist
提取POSIXlt
的时间和日期组件。
release_date <- as.POSIXlt("2021-12-12 08:05:03")
unclass(release_date)
unlist(release_date)
release_date$hour
release_date$mon
release_date$zone
小结
-
当没有时间组件时使用
Date
-
在处理时间和时区时使用
POSIX
-
当您想要访问/提取不同的组件时,请使用
POSIXlt
05
日期运算操作
日期类型可以进行运算操作。
library(lubridate)
course_start <- as_date('2021-04-12')
course_end <- as_date('2021-04-21')
course_duration <- course_end - course_start
course_duration
06
日期和时间案例分析
虚构一份交易数据,包括发票日期,到期日期和付款日期。
library(tidyverse)
transact <- readr::read_csv('https://raw.githubusercontent.com/rsquaredacademy/datasets/master/transact.csv')
transact %>% glimpse()
transact %>%
mutate(
days_to_pay = Payment - Invoice
)
transact %>%
mutate(
delay = Due - Payment
) %>%
filter(delay < 0) %>%
mutate(
delay = delay * -1
)
关于时间和日期,你有什么问题,请添加我的微信。
我是王路情,利用R语言做数据科学工作,工作内容主要包括数据清洗与准备、数据探索、数据分析、数据挖掘、数据可视化、数据报告、建模工作环境搭建、R语言做科研论文等。我可以提供R语言和数据科学的咨询与服务。欢迎你添加我的微信,加入我创建的R语言群,一起学习和使用R语言。
如果你想学习数据科学与人工智能,请关注下方公众号~
2021年R语言学习专辑:
如果觉得本文不错,就顺手帮我转发到朋友圈和微信群哦。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!