你可以使用以下两种方法之一,在R中快速将日期转换为季度和年份格式。
方法1:使用zoo包
library(zoo)
#convert date to year/quarter format
#df$date <- as.yearqtr(df$date, format = '%Y-%m-%d')
方法2:使用lubridate包
library(lubridate)
library(dplyr)
df %>% mutate(date = quarter(date, with_year = TRUE))
下面的例子展示了如何用下面的数据框架来使用每种方法:
#create data frame
df <- data.frame(date=c('2022-01-03', '2022-02-15', '2022-05-09',
'2022-08-10', '2022-10-14', '2022-12-30'),
sales=c(130, 98, 120, 88, 94, 100))
#view data frame
df
date sales
1 2022-01-03 130
2 2022-02-15 98
3 2022-05-09 120
4 2022-08-10 88
5 2022-10-14 94
6 2022-12-30 100
示例1:使用zoo包
下面的代码显示了如何使用zoo包中的**as.yearqtr()**函数将日期格式化为年/季度格式:
library(zoo)
#convert date to year/quarter format
df$date <- as.yearqtr(df$date, format = '%Y-%m-%d')
#view updated data frame
df
date sales
1 2022 Q1 130
2 2022 Q1 98
3 2022 Q2 120
4 2022 Q3 88
5 2022 Q4 94
6 2022 Q4 100
每个日期都被转换为季度和年份格式。
示例2:使用lubridate包
下面的代码显示了如何使用lubridate 包中的**quarter()**函数来将日期格式化为年/季度格式:
library(lubridate)
library(dplyr)
#convert date to year/quarter format
df %>% mutate(date = quarter(date, with_year = TRUE))
date sales
1 2022.1 130
2 2022.1 98
3 2022.2 120
4 2022.3 88
5 2022.4 94
6 2022.4 100
每个日期都被转换为季度和年份格式。
你也可以不使用with_year参数,只显示没有年份的季度。
library(lubridate)
library(dplyr)
#convert date to quarter format
df %>% mutate(date = quarter(date))
date sales
1 1 130
2 1 98
3 2 120
4 3 88
5 4 94
6 4 100
日期现在显示的是季度而不是年份。
其他资源
下面的教程解释了如何在R中进行其他常见的转换: