用8个变量绘制时间序列

时间:2016-11-07 16:54:41

标签: r time series

我的数据框看起来像这样

     " States X2010 X2011 X2012 X2013 X2014 X2015 X2016 Andhra pradhesh   116    99  2827  4827  1359   817   660 Arunachal pradhesh     0     0     0     0     0    35   Assam     0     0     0   742     0     0    38

如何在ggplot中绘图。我在这里尝试了所有发布的答案我的问题是,当它作为列名时,我不知道如何处理多年。 X2010 X2011 X2012 X2013 X2014 X2015 X2016。

1 个答案:

答案 0 :(得分:0)

很难分辨出您发布的数据,但无论如何我都会对其进行拍摄。绘制时间序列数据时遇到的最大问题是数据是宽格式而不是长格式。如果将其转换为long,则会更容易。我使用tidyr包编写了一个快速示例,以及一些适合我认为数据结构的随机样本数据(尽管如此,格式在问题中有很长的路要走。)通过这个例子,看看这样的事情是否适合你的问题。

set.seed(100)
df <- data.frame(States = c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'),
                 X2010 = runif(10),
                 X2011 = runif(10),
                 X2012 = runif(10),
                 X2013 = runif(10),
                 X2014 = runif(10),
                 X2015 = runif(10),
                 X2016 = runif(10))

library('tidyr')
library('ggplot2')
library('stringr')

df <- gather(df, year, value, X2010:X2016)
df$year <- str_replace_all(df$year, 'X', '')
df$year <- as.numeric(df$year)

ggplot(df, aes(x = year, y = value, group = States, color = States)) + geom_line()

将大数据收集到长格式后,每个州和每年都会有一个唯一的行。同样,我无法确定这是否是您的数据的样子,但鉴于您的标题,我相当肯定重塑您的数据将大大有助于绘制时间序列。如果这不起作用,请务必将问题编辑为更具体,并包含更好的样本数据格式。