2012-07-11 161 views
4

可能重复:
How to create a variable of rownames?转换的XTS对象到data.frame


请R中运行它:

require(quantmod) 
setSymbolLookup(SDB=list(name="000001.sz",src="yahoo")) 
getSymbols("SDB",from="2010-01-01",to="2010-02-01") 
sdb=as.data.frame(weeklyReturn(SDB)) 
sdb  

我得到的是什么:

  weekly.returns    
2010-01-08 -0.07830343   
2010-01-15 -0.05176991    
2010-01-22  0.07699487    
2010-01-29 -0.05979203   
2010-02-01 -0.02119816 

我想要得到的是:

 date weekly.returns     
1 2010-01-08  -0.07830343   
2 2010-01-15  -0.05176991   
3 2010-01-22  0.07699487   
4 2010-01-29  -0.05979203    
5 2010-02-01  -0.02119816 

我怎样才能做到这一点?

请注意,这是一个XTS对象,而不是基本的data.frame。转换后,我希望原始rownames在结果data.frame中显示为新变量。

+3

这与[你的其他问题](http://stackoverflow.com/questions/11427434/how-to-create-a-variable-of-rownames)有什么不同? – A5C1D2H2I1M1N2O1R2T1 2012-07-11 09:50:56

+1

sdb2 = data.frame(date = row.names(sdb),weekly.returns = sdb $ weekly.returns) – Paolo 2012-07-11 09:55:21

+0

@mrdwab我的错误,并向user1142618致歉。 – BenBarnes 2012-07-11 10:09:18

回答

10

好的。所以,这与你以前的问题不完全一样,因为这是一个XTS对象。不过,很容易打理的:

data.frame(date = index(weeklyReturn(SDB)), 
      weeklyReturn(SDB), row.names=NULL) 
#   date weekly.returns 
# 1 2010-01-04 -0.03303426 
# 2 2010-01-11 -0.04681569 
# 3 2010-01-18 -0.05000000 
# 4 2010-01-25  0.03353517 
# 5 2010-02-01 -0.04281208 

有关正在这里做了什么,鉴于使用?indexClassXTS包来读取index文档的帮助。