我有以下结构中的原始数据集:
| Ticker | Time | Stock Return |
|----------|----------|--------------|
| Facebook | 12:00:01 | 1% |
| Facebook | 12:00:02 | 1.5% |
| ... | | |
| Apple | 12:00:01 | -0.5% |
| Apple | 12:00:02 | -0.3% |
| ... | | |
| Alibaba | 12:00:01 | -0.5% |
| Alibaba | 12:00:02 | -0.3% |
| ... | | |
现在,我想构建一个具有以下结构的新数据集:
| Facebook | Apple | ...... | Alibaba |
|----------|-------|----------|---------|
| 1% | 1.3% | | 1.8% |
| 1.5% | 1.2% | | 1.5% |
| ... | ... | | ... |
| 0.1% | 1.7% | | 1.3% |
| 0.3% | 2.3% | | 0.2% |
也就是说,我删除了所有变量但是股票回报。新数据集中的股票收益变量将重命名为股票代码名称。
时间应该是连续的(逐秒),并且它们应该在每一行中匹配。
在原始数据集中,不同行中可能存在重复的股票行情。
我想知道如何才能实现这一目标?我这样做是为了进行主成分分析。
我正在考虑以下方式:
DATA PCASET;
SET ORIGINAL DATASET;
RUN;
但是,我不知道如何命名列...
答案 0 :(得分:2)
如果保留TIME变量,则需要按TIME和TICKER排序,然后进行转置。
proc sort data=have;
by time ticker ;
run;
proc transpose data=have out=want ;
by time ;
id ticker ;
var stock_return ;
run;
然后,您将每次获得一次观察值。
否则,您需要将数据减少到每个TICKER一个记录,然后使用相同的转置而不使用BY语句,以便获得单个输出观察。