2017-08-09 83 views
0

我有一个来自FRED的xts对象,并且想将它转换为data.table(或dataframe)对象。相关的代码是:将xts对象从FRED转换为data.table

library(data.table) 
library(quantmod) 
library(Quandl) 
library(zoo) 
library(knitr) 
library(ggplot2) 

dataTableTemp <- getSymbols('DJIA', src='FRED') 
dataTableTemp <- as.data.table(dataTableTemp) 

这是XTS的内容对象它得到:

   DJIA 
2007-08-08 13657.86 
2007-08-09 13270.68 
2007-08-10 13239.54 
...   ...   

STR(DJIA),这是它的下载时,它被赋予的名字,给人

> str(DJIA) 
An ‘xts’ object on 2007-08-08/2017-08-08 containing: 
    Data: num [1:2610, 1] 13658 13271 13240 13237 13029 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr "DJIA" 
    Indexed by objects of class: [Date] TZ: UTC 
    xts Attributes: 
List of 2 
$ src : chr "FRED" 
$ updated: POSIXct[1:1], format: "2017-08-09 09:41:49" 

它继续像几千行一样。当我将其转换为data.table与代码的第二行,然而,这是所有有(以表格形式):

   dataTableTemp 
1   DJIA 

我利用GGPLOT2 fortify(dataTableTemp)尝试,除了

dataTableTemp <- data.frame(date=index(dataTableTemp), coredata(dataTableTemp)),甚至是tribble()方法,但他们都没有工作。我应该怎么做才能将其转换为dataframe/data.table?

任何帮助,将不胜感激。谢谢。

+0

当执行,只有dataTableTemp有一行有'date'和'coredata.dataTableTemp'列。 '日期'只是数字1(显然不正确),另一列是股票代码名称(DJIA),它应该是16000这样的数字。 –

+0

在DJIA而不是dataTableTemp上做?这可能只是返回符号的字符串名称。获取符号的赋值默认返回名称。有一个参数可以设置为返回任务中的数据,但是您的全局环境获取DJIA – FXQuantTrader

+0

dataTableTemp < - data.frame(date = index(DJIA),coredata(DJIA)) – FXQuantTrader

回答

1

让别人知道这个问题是如何解决的:

getSymbols('DJIA', src='FRED') 
dataTableTemp <- as.data.table(DJIA) 
1

,如果你调整getSymbolsauto.assign参数你可以得到你所期望的结果:

# Note the auto.assign = FALSE parameter specification (this will avoid assigning the data to JDIA in the global environment.: 

dataTableTemp <- getSymbols('DJIA', src='FRED', auto.assign = FALSE) 
x = data.table("date" = index(dataTableTemp), coredata(dataTableTemp))