我使用相对原始且某种“愚蠢”的方式创建了下面的示例数据框,我想知道是否有更短/更简洁的方法这样做?万分感谢。
library(pedquant)
PECCPC<-md_stock(c("600028","601857","00386.HK","00857.HK"),type='real')
a<-as.data.frame(PECCPC$symbol[1:2])
b<-as.data.frame(PECCPC$close[1:2])
c<-as.data.frame(PECCPC$symbol[3:4])
d<-as.data.frame(PECCPC$close[3:4])
e<-cbind(a,b)
f<-cbind(c,d)
g<-cbind(e,f)
g$spread<-g[,2]-g[,4]
colnames(g)<-c("A-shares","Price","H-shares","Price","AH_spread")
g
A-shares Price H-shares Price AH_spread
1 600028.SS 4.31 00386.HK 3.42 0.89
2 601857.SS 5.04 00857.HK 3.38 1.66
继我的评论之后,这里有一个非常简单和标准的方法来做到这一点data.frame
除了基础 R 之外什么都没有。我用EuStockMarkets
R 中包含的数据集,并在点差计算后跳过股票计数:
> library(datasets)
> data(EuStockMarkets)
> head(EuStockMarkets)
DAX SMI CAC FTSE
[1,] 1628.75 1678.1 1772.8 2443.6
[2,] 1613.63 1688.5 1750.5 2460.2
[3,] 1606.51 1678.6 1718.0 2448.2
[4,] 1621.04 1684.1 1708.1 2470.4
[5,] 1618.16 1686.6 1723.1 2484.7
[6,] 1610.61 1671.6 1714.3 2466.8
>
因此,给定这个数据集,我们创建一个data.frame
通过分配两列(这也给出了名称)。然后,我们在后续作业中使用这两列,我们使用within
经营范围内data.frame
使列名可直接访问:
> DF <- data.frame(DAX_level=EuStockMarkets[,"DAX"], SMI_level=EuStockMarkets[,"SMI"])
> DF <- within(DF, DAX_SMI_spread <- DAX_level - SMI_level)
> head(DF)
DAX_level SMI_level DAX_SMI_spread
1 1628.75 1678.1 -49.35
2 1613.63 1688.5 -74.87
3 1606.51 1678.6 -72.09
4 1621.04 1684.1 -63.06
5 1618.16 1686.6 -68.44
6 1610.61 1671.6 -60.99
>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)