1

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

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

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

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

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)

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

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")
4

1 回答 1

2

我认为这应该为您解决问题:

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

你首先把我和你的大量数据和代码搞混了。所以下一次也许让它更小的数据集和一个漂亮的小代码片段......

于 2013-05-23T00:07:32.953 回答