具有不同数据帧的重叠时间序列 [英] Overlap time series with different dataframes

查看:117
本文介绍了具有不同数据帧的重叠时间序列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用不同的时间序列来绘制经济衰退图。对于单个图表,它的工作正常。

I am using different time series in order to plot a graph with recession bars. For the single graph it works fine.

但是,我想在一个图中重叠不同的时间序列。我使用[这里] [1]的经济衰退酒吧的代码。

However, I would like to overlap the different time series in one single graph. I used the code for the recession bars from [here][1].

此外,我认为一个解决方案可能是绑定或融化不同的时间序列,如[这里] [2]。

Moreover, I thought a solution might be to bind or melt the different time series as described [here][2].

如果有人花时间和精力来帮助我,我将非常感激。请在下面找到我的R代码:

I would be very grateful, if somebody takes the time and effort to help me. Please, find my R code below:

library(quantmod)
library(ggplot2)
library(lubridate)
library(reshape2)

env1 = new.env()
getSymbols("^GSPC", env = env1, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2010-09-29"))
GSPC = env1$GSPC
gspc.df = data.frame(date=time(GSPC), coredata(GSPC))
    recessions.df = read.table(textConnection(
      "Peak, Trough
      1857-06-01, 1858-12-01
      1860-10-01, 1861-06-01
      1865-04-01, 1867-12-01
      1869-06-01, 1870-12-01
      1873-10-01, 1879-03-01
      1882-03-01, 1885-05-01
      1887-03-01, 1888-04-01
      1890-07-01, 1891-05-01
      1893-01-01, 1894-06-01
      1895-12-01, 1897-06-01
      1899-06-01, 1900-12-01
      1902-09-01, 1904-08-01
      1907-05-01, 1908-06-01
      1910-01-01, 1912-01-01
      1913-01-01, 1914-12-01
      1918-08-01, 1919-03-01
      1920-01-01, 1921-07-01
      1923-05-01, 1924-07-01
      1926-10-01, 1927-11-01
      1929-08-01, 1933-03-01
      1937-05-01, 1938-06-01
      1945-02-01, 1945-10-01
      1948-11-01, 1949-10-01
      1953-07-01, 1954-05-01
      1957-08-01, 1958-04-01
      1960-04-01, 1961-02-01
      1969-12-01, 1970-11-01
      1973-11-01, 1975-03-01
      1980-01-01, 1980-07-01
      1981-07-01, 1982-11-01
      1990-07-01, 1991-03-01
      2001-03-01, 2001-11-01
      2007-12-01, 2009-06-01"), sep=',',
    colClasses=c('Date', 'Date'), header=TRUE)
    recessions.trim = subset(recessions.df, Peak >= min(gspc.df$date))
    g.gspc = ggplot(gspc.df) + geom_line(aes(x=date, y=GSPC.Adjusted)) + theme_bw()
    g.gspc = g.gspc + geom_rect(data=recessions.trim, aes(xmin=Peak, xmax=Trough, ymin=-Inf, ymax=+Inf), fill='pink', alpha=0.4)
    plot(g.gspc)

    env.2 = new.env()
    getSymbols("BID", env = env.2, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2010-09-29"))
    sothebys.df = data.frame(date=time(env.2$BID), coredata(env.2$BID))
recessions.df = read.table(textConnection(
  "Peak, Trough
  1857-06-01, 1858-12-01
  1860-10-01, 1861-06-01
  1865-04-01, 1867-12-01
  1869-06-01, 1870-12-01
  1873-10-01, 1879-03-01
  1882-03-01, 1885-05-01
  1887-03-01, 1888-04-01
  1890-07-01, 1891-05-01
  1893-01-01, 1894-06-01
  1895-12-01, 1897-06-01
  1899-06-01, 1900-12-01
  1902-09-01, 1904-08-01
  1907-05-01, 1908-06-01
  1910-01-01, 1912-01-01
  1913-01-01, 1914-12-01
  1918-08-01, 1919-03-01
  1920-01-01, 1921-07-01
  1923-05-01, 1924-07-01
  1926-10-01, 1927-11-01
  1929-08-01, 1933-03-01
  1937-05-01, 1938-06-01
  1945-02-01, 1945-10-01
  1948-11-01, 1949-10-01
  1953-07-01, 1954-05-01
  1957-08-01, 1958-04-01
  1960-04-01, 1961-02-01
  1969-12-01, 1970-11-01
  1973-11-01, 1975-03-01
  1980-01-01, 1980-07-01
  1981-07-01, 1982-11-01
  1990-07-01, 1991-03-01
  2001-03-01, 2001-11-01
  2007-12-01, 2009-06-01"), sep=',',
colClasses=c('Date', 'Date'), header=TRUE)
recessions.trim = subset(recessions.df, Peak >= min(sothebys.df$date))
g.sothebys = ggplot(sothebys.df) + geom_line(aes(x=date, y=BID.Adjusted)) + theme_bw()
g.sothebys = g.sothebys + geom_rect(data=recessions.trim, aes(xmin=Peak, xmax=Trough, ymin=-Inf, ymax=+Inf), fill='pink', alpha=0.4)
plot(g.sothebys)

jobless <- getSymbols('IC4WSA',src='FRED', auto.assign=F)
jobless <- jobless * (-1)
jobless.df = data.frame(date=time(jobless), coredata(jobless))
recessions.df = read.table(textConnection(
  "Peak, Trough
  1857-06-01, 1858-12-01
  1860-10-01, 1861-06-01
  1865-04-01, 1867-12-01
  1869-06-01, 1870-12-01
  1873-10-01, 1879-03-01
  1882-03-01, 1885-05-01
  1887-03-01, 1888-04-01
  1890-07-01, 1891-05-01
  1893-01-01, 1894-06-01
  1895-12-01, 1897-06-01
  1899-06-01, 1900-12-01
  1902-09-01, 1904-08-01
  1907-05-01, 1908-06-01
  1910-01-01, 1912-01-01
  1913-01-01, 1914-12-01
  1918-08-01, 1919-03-01
  1920-01-01, 1921-07-01
  1923-05-01, 1924-07-01
  1926-10-01, 1927-11-01
  1929-08-01, 1933-03-01
  1937-05-01, 1938-06-01
  1945-02-01, 1945-10-01
  1948-11-01, 1949-10-01
  1953-07-01, 1954-05-01
  1957-08-01, 1958-04-01
  1960-04-01, 1961-02-01
  1969-12-01, 1970-11-01
  1973-11-01, 1975-03-01
  1980-01-01, 1980-07-01
  1981-07-01, 1982-11-01
  1990-07-01, 1991-03-01
  2001-03-01, 2001-11-01
  2007-12-01, 2009-06-01"), sep=',',
colClasses=c('Date', 'Date'), header=TRUE)
recessions.trim = subset(recessions.df, Peak >= min(jobless.df$date))
g.jobless = ggplot(jobless.df) + geom_line(aes(x=date, y=IC4WSA)) + theme_bw()
g.jobless = g.jobless + geom_rect(data=recessions.trim, aes(xmin=Peak, xmax=Trough, ymin=-Inf, ymax=+Inf), fill='pink', alpha=0.4)
plot(g.jobless)

到目前为止,一切都很好。但是,这里开始出现问题:

So far, everything fine. But, here start the problems:

gspc.trim <- subset(gspc.df, date >= min(sothebys.df$date)) #LAEUFT
indicators <- rbind(gspc.trim$GSPC.Adjusted, sothebys.df$BID.Adjusted, id.vars="date")
indicators <- melt(gspc.trim$GSPC.Adjusted, sothebys.df$BID.Adjusted, id.vars="date")


推荐答案

我认为这应该是你的窍门:

I think this should do the trick for you:

indicators <- merge(cbind(gspc.trim["date"],gspc.trim["GSPC.Adjusted"]), cbind(sothebys.df["date"],sothebys.df["BID.Adjusted"]))
indicators <- melt(indicators, id.vars="date")

你首先把你的大量数据和代码混淆了出来。所以下一次可能会使它更小的数据集和一个很好的小代码片段...

You first confused the heck out of me with your massive amounts of data and code. So next time maybe make it smaller datasets and a nice little code snippet...

这篇关于具有不同数据帧的重叠时间序列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆