0

使用 unique 命令,我可以轻松地从我的原始每日股票数据中获取唯一代码列表。结果是:

my.table <- unique(my.frame1[,5])
> my.table
 [1] NPN BIL CFR IMP FSR SHF SHP REI INP OML REM ABL AGL SAB WHL BTI MMI RMI PIK TRU INL SPP CLS
[24] SBK PPC IPL SOL ASA RMH MTN ANG EXX DSY NED SLM AVI KIO VOD GFI APN
40 Levels: ABL AGL ANG APN ASA AVI BIL BTI CFR CLS DSY EXX FSR GFI IMP INL INP IPL KIO ... WHL

但是,我现在遍历列表以进行一些基本计算。我正在尝试将代码分配给每个交易日,但列表中的观察结果并未按预期与我的数据交互:

> code <- my.table[2]
> code
[1] BIL
40 Levels: ABL AGL ANG APN ASA AVI BIL BTI CFR CLS DSY EXX FSR GFI IMP INL INP IPL KIO ... WHL 

> my.daily <- my.daily[,3:6]
> my.daily[,1] <- code
> my.daily
           my.xts...1..Low my.xts...1..Close     VWAP SIDE
2011-08-31               7             23765 23744.30    1
2011-09-08               7             22876 23056.72    1
2012-02-14               7             25050 25230.52   -1
2012-07-25               7             23480 23591.01   -1
2013-05-12               7             26818 26737.65   -1

现在,根据上面代码的值,我希望 xts 对象中的第一列是“BIL”。

请问我错过了什么?

4

1 回答 1

2

xts是一个数字矩阵。矩阵中不能有多种类型(数字和因子)。该因子被强制转换为一个因子(如前所述)以具有单一类型(此处为数字)。

作为一种解决方法,您可以首先将您的 xts 对象强制为 data.frame。

my.daily <- as.data.frame(my.daily)
my.daily[,1] <- code

但是你为什么要这样做呢?xts您失去了处理时间序列的所有能力和效率。

于 2013-08-02T10:04:26.840 回答