我如何在R中绘制一个以季度为单位的 Dataframe ?

omhiaaxx  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(129)

我有一个数据集:

Country Time      Value
1   USA    1999-Q1   292929
2   USA    1999-Q2   392023
3.  USA    1999-Q3   9392992
4

......等等。现在我想绘制这个 Dataframe ,时间在x轴上,y是值。但我面临的问题是我不知道如何绘制时间。因为它不是以月/日/年给出的。如果是这样,我只会编码as.Date( format = "%m%d%y")。我不允许更改季度名称。所以当我绘制它时,就应该这样,我该怎么做
先谢谢你!

dl5txlt9

dl5txlt91#

假设末尾的Note中显示了DF,将Time列转换为直接表示年和季度的yearqtr类(与使用Date类相反),并使用scale_x_yearqtr

library(ggplot2)
library(zoo)

fmt <- "%Y-Q%q"
DF$Time <- as.yearqtr(DF$Time, format = fmt)
ggplot(DF, aes(Time, Value, col = Country)) + 
  geom_point() + 
  geom_line() +
  scale_x_yearqtr(format = fmt)

(在图形后继续)

也可以将其转换为每个国家一列的宽格式zoo对象,然后使用autoplot。使用下面注解中的DF

fmt <- "%Y-Q%q"
z <- read.zoo(DF, split = "Country", index = "Time", 
  FUN = as.yearqtr, format = fmt)
autoplot(z) + scale_x_yearqtr(format = fmt)

注解

Lines <- "
Country Time Value 
1 USA 1999-Q1 292929 
2 USA 1999-Q2 392023 
3 USA 1999-Q3 9392992"
DF <- read.table(text = Lines)
ogsagwnx

ogsagwnx2#

使用ggplot2:

library(ggplot2)

ggplot(df, aes(Time, Value, fill = Country)) + geom_col()

r7knjye2

r7knjye23#

我知道其他人已经回答了,但我认为这个更一般的答案也应该在这里。
当你做as.Date()的时候,你只能做开头,我在你的 Dataframe 上试过了(我把它叫做df),它起作用了:

> as.Date(df$Time, format = "%Y")
[1] "1999-11-28" "1999-11-28" "1999-11-28"

现在,我不知道你是想使用plot()ggplot(),还是ggplot2库,我不知道,这也没关系,不管你想指定y轴,你都可以这样做。

相关问题