如何将datemon的日期格式更改为yyyy

编程入门 行业动态 更新时间:2024-10-25 07:21:47
本文介绍了如何将datemon的日期格式更改为yyyy-mm-dd?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我最终的目标是将每月的标准普尔500指数,苏富比和工业生产情况划分为一个标准化的ggplot2,包括经济衰退条。我通过收集我的数据quantmod和Quandl:

#======= LOAD PACKAGES ============ ======================== library(tseries) library(quantmod) library(Quandl)库(ggplot2)库(预测)库(urca) =======数据导入========== ============================ env1 = new.env() getSymbols(^ GSPC, env = env1,src =yahoo,from = as.Date(1988-06-01),to = as.Date(2013-04-01)) GSPC = env1 $ GSPC gspc.df = data.frame(date = time(GSPC),coredata(GSPC)) env2 = new.env() getSymbols(BID,env = env2,src =yahoo,from = as.Date(1988-06-01),to = as.Date(2013-04-01)) BID = env2 $ BID sothebys.df = data.frame(date = time(BID),coredata(BID)) INDPRO < - Quandl(FRED / INDPRO,start_date =1988-06-01 ,E nd_date =2013-05-29,type =xts) indpro.df = data.frame(date = time(INDPRO),coredata(INDPRO))

之后,我将每日数据转换为每月数据:

然后,我正在构建plot的data.frame:

#构建数据框,其中包含每月的日期和股票价格以用于图表 dfm = data.frame(Date = gspcm.df $ date,GSPCM = gspcm.df $ GSPC.Adjusted,BIDM = sothebysm.df $ BID。调整后,INDPROM = indprom.df $ INDPRO.Close)

最后,我尝试构建一个ggplot2衰退酒吧作为desc ribed(请参阅链接 ):

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,1906-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 =子集(衰退。 df,Peak> = min(gspc.df $ date)) g.gspc = ggplot(data = dfm)+ geom_line(aes(x = Date,y = GSPCM,color =blue))+ geom_line(aes(x = Date,y = BIDM,color =red))+ geom_line(aes(x = Date,y = INDPROM,color =green))+ 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)

这里会返回以下错误消息:

不知道如何自动为yearmon类型的对象选择比例。默认连续。 Fehler:提供给连续规模的离散值

我认为这与我的日期格式有关dataframe和衰退中的日期格式.df。再次,您的帮助将不胜感激。希望代码不要太冗长。

如果有一种方法可以生成同样的图表,包括来自Quantmod的ChartSeries工具的衰退条,那就太棒了...

p>如果您在绘图之前将日期从 yearmon 转换为日期,那么您当前的设置将起作用。

dfm = data.frame(Date = as.Date(gspcm.df $ date),GSPCM = gspcm.df $ GSPC.Adjusted, BIDM = sothebysm.df $ BID.Adjusted,INDPROM = indprom.df $ INDPRO.Close)

My ultimate bjective is to plot the monthly S&P 500, Sotheby's, and Industrial Production into one normalized ggplot2, including recession bars.

I collect my data via quantmod and Quandl:

#======= LOAD PACKAGES ==================================== library(tseries) library(quantmod) library(Quandl) library(ggplot2) library(forecast) library(urca) #======= DATA IMPORT ====================================== env1 = new.env() getSymbols("^GSPC", env = env1, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2013-04-01")) GSPC = env1$GSPC gspc.df = data.frame(date=time(GSPC), coredata(GSPC)) env2 = new.env() getSymbols("BID", env = env2, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2013-04-01")) BID = env2$BID sothebys.df = data.frame(date=time(BID), coredata(BID)) INDPRO <- Quandl("FRED/INDPRO", start_date="1988-06-01",end_date="2013-05-29",type="xts") indpro.df = data.frame(date=time(INDPRO), coredata(INDPRO))

Afterwards, I transform the daily data to monthly data:

# Transform data to monthly time series GSPCM <- to.monthly(GSPC) gspcm.df = data.frame(date=time(GSPCM), coredata(GSPCM)) BIDM <- to.monthly(BID) sothebysm.df = data.frame(date=time(BIDM), coredata(BIDM)) INDPROM <- to.monthly(INDPRO) indprom.df = data.frame(date=time(INDPROM), coredata(INDPROM))

Then, I am constructing the data.frame for the plot:

# Build the dataframe with monthly dates and stock prices to be used in graphing dfm = data.frame(Date = gspcm.df$date, GSPCM = gspcm.df$GSPC.Adjusted, BIDM = sothebysm.df$BID.Adjusted, INDPROM = indprom.df$INDPRO.Close)

Finally, I try to build a ggplot2 with recession bars as described (See Link):

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(data = dfm) + geom_line(aes(x = Date, y = GSPCM, colour = "blue")) + geom_line(aes(x = Date, y = BIDM, colour = "red")) + geom_line(aes(x = Date, y = INDPROM, colour = "green")) + 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)

Here the following error message is returned:

Don't know how to automatically pick scale for object of type yearmon. Defaulting to continuous. Fehler: Discrete value supplied to continuous scale

I assume it has something to do with the date format in my dataframe and the date format in the recessions.df. Again, your help would be highly appreciated. Hope the code is not too lengthy.

P.S. If there is a way to generate the same chart including recession bars with the ChartSeries Tool from Quantmod, that would be awesome...

解决方案

Your current setup will work if you convert the Date from yearmon to Date before plotting.

dfm = data.frame(Date = as.Date(gspcm.df$date), GSPCM = gspcm.df$GSPC.Adjusted, BIDM = sothebysm.df$BID.Adjusted, INDPROM = indprom.df$INDPRO.Close)

更多推荐

如何将datemon的日期格式更改为yyyy

本文发布于:2023-10-28 18:38:22,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   日期   格式   yyyy   datemon

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!