如何在R中将日期转换为季度和年份

729 阅读1分钟

你可以使用以下两种方法之一,在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中进行其他常见的转换:

如何在R中把日期转换成数字
如何在R中把数字转换成字符
如何在R中把分类变量转换成数字