Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在季度年内绘制R中的数据帧?_R_Time_Time Series_Series_Quarter - Fatal编程技术网

如何在季度年内绘制R中的数据帧?

如何在季度年内绘制R中的数据帧?,r,time,time-series,series,quarter,R,Time,Time Series,Series,Quarter,我有一个给定的数据集: Country Time Value 1 USA 1999-Q1 292929 2 USA 1999-Q2 392023 3. USA 1999-Q3 9392992 4 。。。。等等现在我想绘制这个数据帧,时间在x轴上,y是值。但我面临的问题是,我不知道如何规划时间。因为它不是以月/日/年的形式给出的。如果是这样的话,我只需将编码为.Date(format=“%m%d%y”)。我不允许更改季度名称。所以当我绘制它

我有一个给定的数据集:

   Country Time      Value
1   USA    1999-Q1   292929
2   USA    1999-Q2   392023
3.  USA    1999-Q3   9392992
4
。。。。等等现在我想绘制这个数据帧,时间在x轴上,y是值。但我面临的问题是,我不知道如何规划时间。因为它不是以月/日/年的形式给出的。如果是这样的话,我只需将
编码为.Date(format=“%m%d%y”)
。我不允许更改季度名称。所以当我绘制它时,它应该保持这种状态。我该怎么做


提前谢谢你

假设最后的注释中显示了DF,将时间列转换为直接表示年和季度的
yearqtr
类(而不是使用
Date
class),并使用
scale\u x\u yearqtr
。有关更多信息,请参见
?比例x年QTR

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)

行假设注释末尾显示的DF,将时间列转换为直接表示年和季度的
年QTR
类(而不是使用
日期
类),并使用
比例x年QTR
。有关更多信息,请参见
?比例x年QTR

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)
注 使用ggplot2:

库(ggplot2)
ggplot(df,aes(时间,值,填充=国家))+geom_col()

使用ggplot2:

库(ggplot2)
ggplot(df,aes(时间,值,填充=国家))+geom_col()

我知道其他人已经回答了,但我认为这个更一般的答案也应该在这里

当您以.Date()的形式执行
操作时,只能执行开头的操作。我在您的数据帧上尝试了它(我称之为
df
),它成功了:

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

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

我知道其他人已经回答了,但我认为这个更一般的答案也应该在这里

当您以.Date()的形式执行
操作时,只能执行开头的操作。我在您的数据帧上尝试了它(我称之为
df
),它成功了:

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

现在,我不知道您是否要使用
plot()
ggplot()
ggplot2
库。。。我不知道,也没关系。但是,如果要指定y轴,可以这样做。

虽然如果我自己绘制,我可能会这样做,但值得注意的是,时间列的格式意味着时间顺序和字典顺序是相同的,因此,如果只需要一个带有直接标签的简单绘图,那么转换成不同格式可能会增加复杂性。还是我没有抓住要点?没错,尽管OP确实说他们不允许更改季度名称,而且使用集团美学仍然可以绘制线条图。我一点也不反对你的方法——我是在观察与时间顺序一致的因子水平,以及它如何允许一条捷径来满足OP的规范。@Allan,这是一个时间序列,时间序列通常绘制为直线,而不是条形图。此外,这不太可能是唯一需要做的事情。最好先将数据转换成合理的形式,然后再使用它。虽然如果我自己绘制,我可能会这样做,但值得注意的是,时间列的格式意味着时间顺序和字典顺序是相同的,因此,如果只需要一个带有直接标签的简单绘图,那么转换成不同格式可能会增加复杂性。还是我没有抓住要点?没错,尽管OP确实说他们不允许更改季度名称,而且使用集团美学仍然可以绘制线条图。我一点也不反对你的方法——我是在观察与时间顺序一致的因子水平,以及它如何允许一条捷径来满足OP的规范。@Allan,这是一个时间序列,时间序列通常绘制为直线,而不是条形图。此外,这不太可能是唯一需要做的事情。最好先将数据转换成合理的形式,然后再使用它。