我想将具有多次重复的日期变量转换为适合的日期格式,可以使用 R 绘制时间序列

问题描述 投票:0回答:1

我想将数据框中的季度列转换为日期格式 df1_long

Quarter        Country    value
 1: Q1-2019      Australia 1607.929
 2: Q2-2019      Australia 1267.899
 3: Q3-2019      Australia 1584.615
 4: Q4-2019      Australia 1627.014
 5: Q1-2020      Australia 2000.000
 6: Q3-2022      Australia 1960.000
 7: Q4-2022      Australia 1908.295
 8: Q1-2023      Australia 2200.000
 9: Q2-2023      Australia 1838.000
10: Q1-2019             US 3652.640
11: Q2-2019             US 3017.615
12: Q3-2019             US 3081.797
13: Q4-2019             US 3179.357
14: Q1-2020             US 4064.289
15: Q3-2022             US 3076.462
16: Q4-2022             US 3987.771
17: Q1-2023             US 4036.000
18: Q2-2023             US 3032.000
19: Q1-2019         Canada 3311.035

当我尝试

df1_long$Q1 <-as.Date(as.yearqtr(df1_long$Quarter, format = "Q%q-%y"))
使用 lubridate 库时,我最终得到的结果是所有年份都默认为 2020 年。

 Quarter        Country    value         Q1
 1: Q1-2019      Australia 1607.929 2020-01-01
 2: Q2-2019      Australia 1267.899 2020-04-01
 3: Q3-2019      Australia 1584.615 2020-07-01
 4: Q4-2019      Australia 1627.014 2020-10-01
 5: Q1-2020      Australia 2000.000 2020-01-01
 6: Q3-2022      Australia 1960.000 2020-07-01
 7: Q4-2022      Australia 1908.295 2020-10-01
 8: Q1-2023      Australia 2200.000 2020-01-01
 9: Q2-2023      Australia 1838.000 2020-04-01
10: Q1-2019             US 3652.640 2020-01-01
11: Q2-2019             US 3017.615 2020-04-01
12: Q3-2019             US 3081.797 2020-07-01
13: Q4-2019             US 3179.357 2020-10-01
14: Q1-2020             US 4064.289 2020-01-01
15: Q3-2022             US 3076.462 2020-07-01
16: Q4-2022             US 3987.771 2020-10-01
17: Q1-2023             US 4036.000 2020-01-01
18: Q2-2023             US 3032.000 2020-04-01
19: Q1-2019         Canada 3311.035 2020-01-01

我该如何纠正这个问题?

我也尝试过润滑

df1a_long <- df1_long %>% mutate(qtr = quarter(x, with_year = T))
但这没有用。 当尝试其他选项时,通常会出现“由
as.POSIXlt.character()
中的错误引起: !字符串不是标准的明确格式”错误,我认为这是由于该季度出现多个相同的日期,因为在同一时间点测量多个国家/地区。

date time-series lubridate
1个回答
0
投票

问题是

%y
代表没有世纪的年份(00-99)。您想要的是 %Y,即带有世纪的年份(例如 2023)。

您可以在 R 文档此处阅读有关日期格式字符串的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.