Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转置后的SAS空列名(但非空单元格)_Sas - Fatal编程技术网

转置后的SAS空列名(但非空单元格)

转置后的SAS空列名(但非空单元格),sas,Sas,我使用以下代码执行转置操作: proc sort data=TPSDATA; by TIME SYMBOL ; run; PROC TRANSPOSE DATA=TPSDATA OUT=TPS; by TIME; id SYMBOL; var return_sec; RUN; 我的原始数据集类似于以下结构: | SYMBOL | Time | RETURN_SEC

我使用以下代码执行转置操作:

proc sort data=TPSDATA;
            by TIME SYMBOL ;
    run;
    PROC TRANSPOSE DATA=TPSDATA OUT=TPS;
            by TIME;
            id SYMBOL;
            var return_sec;
    RUN;
我的原始数据集类似于以下结构:

| SYMBOL   | Time     | RETURN_SEC |
|----------|----------|--------------|
| 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%        |
| ...      |          |              |
我有一些奇怪的空单元格:

WNR WNS WOOD    WOOF    WOR
0   0   0   0   0







-0.000183117    0   0   -0.000684932    0





0   0   0   0   0

0   0   0   0   0
0.000732467 0   0   0   0
0.001280878 0   -0.000430108    0   0
/*
 * Principle Component Analysis
 */
%MACRO PCA (NBBOOUTSET,DATE_VAR);
        options nonotes;
        %put ;
        %put ### START PCA Estimation for: &DATE_VAR ;
        /* Sort the variable by time first */
        proc sort data=&NBBOOUTSET;
                by TIME SYMBOL ;
        run;
        DATA TPSDATA;
                SET &NBBOOUTSET;
        RUN;
        proc export data=TPSDATA (obs=99999)
        outfile="&date_var.tpstest.csv"
        dbms=CSV REPLACE;
        putname=YES;
        run;
        proc sort data=TPSDATA;
                by TIME SYMBOL ;
        run;
        PROC TRANSPOSE DATA=TPSDATA OUT=TPS;
                by TIME;
                id SYMBOL;
                var return_sec;
        RUN;
        DATA TPS_DROPPED;
                SET TPS;
                drop _NAME_ time;
        RUN;
        proc export data=TPS_DROPPED (obs=99999)
        outfile="&date_var.dropped.csv"
        dbms=CSV REPLACE;
        putname=YES;
        run;
%MEND;
某些列的列名为空,但内容非空:

CRESW   CRFN
















0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0

0   0   0   0   0   0   0   0

0   0   0   0   0   0   0   0
我在想为什么

我玩了一些游戏,试图复制这个问题。我复制并粘贴了80行或我的原始数据(来自两个不同的股票)到数据集中,效果很好

然后我试图删除一些数据。例如,我删除了facebook 12:00:01。然而,我没有得到一个空的列名,而是得到了一个空单元格

无法复制我的问题的测试代码:

data long4; 
  input SYMBOL $ TIME RETURN_SEC $; 
cards; 
TEG 1 53.525
TEG 2 53.5
TEG 3 53.5
TEG 4 53.485
TEG 5 53.48
TEG 6 53.485
TEG 7 53.48
TEG 8 53.495
TEG 9 53.495
TEG 10 53.495
TEG 11 53.495
TEG 12 53.495
TEG 13 53.495
TEG 14 53.495
TEG 15 53.495
TEG 16 53.495
TEG 17 53.495
TEG 18 53.495
TEG 19 53.5
TEG 20 53.63
TEG 21 53.625
TEG 22 53.625
TEG 23 53.625
TEG 24 53.625
TEG 25 53.625
TEG 26 53.625
TEG 27 53.62
TEG 28 53.62
TEG 29 53.62
TEG 30 53.62
TEG 31 53.62
TEG 32 53.62
TEG 33 53.62
TEG 34 53.555
TEG 35 53.525
TEG 36 53.525
TEG 37 53.535
TEG 38 53.535
TEG 39 53.535
TEG 40 53.535
TEG 41 53.535
TEG 42 53.535
TEG 43 53.54
TEG 44 53.505
TEG 45 53.51
TEG 46 53.505
TEG 47 53.51
TEG 48 53.505
TEG 49 53.51
TEG 50 53.52
TEG 51 53.51
TEG 52 53.52
TEG 53 53.525
TEG 54 53.52
TEG 55 53.52
TEG 56 53.475
TEG 57 53.46
TEG 58 53.46
TEG 59 53.46
TEG 60 53.46
TEG 61 53.43
TEG 62 53.415
TEG 63 53.405
TEG 64 53.4
TEG 65 53.4
TEG 66 53.38
TEG 67 53.32
TEG 68 53.315
TEG 69 53.325
TEG 70 53.325
TEG 71 53.33
TEG 72 53.33
TEG 73 53.33
TEG 74 53.325
TEG 75 53.325
TEG 76 53.27
TEG 77 53.27
TEG 78 53.27
TEG 79 53.27
GOOG 10 53.495
GOOG 11 53.495
GOOG 12 53.495
GOOG 13 53.495
GOOG 14 53.495
GOOG 15 53.495
GOOG 16 53.495
GOOG 17 53.495
GOOG 18 53.495
GOOG 19 53.5
GOOG 20 53.63
GOOG 21 53.625
GOOG 22 53.625
GOOG 23 53.625
GOOG 24 53.625
GOOG 25 53.625
GOOG 26 53.625
GOOG 27 53.62
GOOG 28 53.62
GOOG 29 53.62
GOOG 30 53.62
GOOG 31 53.62
GOOG 32 53.62
GOOG 33 53.62
GOOG 34 53.555
GOOG 35 53.525
GOOG 36 53.525
GOOG 37 53.535
GOOG 38 53.535
GOOG 39 53.535
GOOG 40 53.535
GOOG 41 53.535
GOOG 42 53.535
GOOG 43 53.54
GOOG 44 53.505
GOOG 45 53.51
GOOG 46 53.505
GOOG 47 53.51
GOOG 48 53.505
GOOG 49 53.51
GOOG 50 53.52
GOOG 51 53.51
GOOG 52 53.52
GOOG 53 53.525
GOOG 54 53.52
GOOG 55 53.52
GOOG 56 53.475
GOOG 57 53.46
GOOG 58 53.46
GOOG 59 53.46
GOOG 60 53.46
GOOG 61 53.43
GOOG 62 53.415
GOOG 63 53.405
GOOG 64 53.4
GOOG 65 53.4
GOOG 66 53.38
GOOG 67 53.32
GOOG 68 53.315
GOOG 69 53.325
GOOG 70 53.325
GOOG 71 53.33
GOOG 72 53.33
GOOG 73 53.33
GOOG 74 53.325
GOOG 75 53.325
GOOG 76 53.27
GOOG 77 53.27
GOOG 78 53.27
; 
run; 

proc sort data=long4 force; by Time SYMBOL; run;

proc transpose data=long4 out=wide4;
  by TIME;
  id SYMBOL;
  var RETURN_SEC;
run;

proc print data=wide4;
run;
真奇怪。我只是在想原因是什么?原始数据集非常庞大,我只能在数据集的子集上测试代码

我还检查了-原始数据集中没有缺失的股票代码

更新:

代码:

WNR WNS WOOD    WOOF    WOR
0   0   0   0   0







-0.000183117    0   0   -0.000684932    0





0   0   0   0   0

0   0   0   0   0
0.000732467 0   0   0   0
0.001280878 0   -0.000430108    0   0
/*
 * Principle Component Analysis
 */
%MACRO PCA (NBBOOUTSET,DATE_VAR);
        options nonotes;
        %put ;
        %put ### START PCA Estimation for: &DATE_VAR ;
        /* Sort the variable by time first */
        proc sort data=&NBBOOUTSET;
                by TIME SYMBOL ;
        run;
        DATA TPSDATA;
                SET &NBBOOUTSET;
        RUN;
        proc export data=TPSDATA (obs=99999)
        outfile="&date_var.tpstest.csv"
        dbms=CSV REPLACE;
        putname=YES;
        run;
        proc sort data=TPSDATA;
                by TIME SYMBOL ;
        run;
        PROC TRANSPOSE DATA=TPSDATA OUT=TPS;
                by TIME;
                id SYMBOL;
                var return_sec;
        RUN;
        DATA TPS_DROPPED;
                SET TPS;
                drop _NAME_ time;
        RUN;
        proc export data=TPS_DROPPED (obs=99999)
        outfile="&date_var.dropped.csv"
        dbms=CSV REPLACE;
        putname=YES;
        run;
%MEND;
日志:


正如您所看到的,没有错误。但是在导出的数据集中,列在ticker“CRFN”之后是空的。

实际上,Reeza是正确的

问题不在于代码本身,而在于我读取csv(或导出数据)的方式

当csv文件中的列太多(大约有2000~4000列)时,似乎会出现问题。我试图用python、pandas和jupyternotebook阅读csv,但是列完全关闭了(数千列缺少名称)。我试着用excel读取csv文件,数百列被关闭

没有空列名


代码产生的错误是由于缺少内容造成的(proc factor不允许缺少一个值,否则它将忽略完整的观察结果。结果表明,每次观察中至少缺少一个值,然后sas忽略了我的所有数据集)。

发布完整日志。是否可以删除完整的数据集?很明显,从您提供的信息来看,这是不可能的。创建没有名称的变量确实是不可能的。也许问题在于你是如何看待结果的?我发布了上面的部分结果(它们是CSV文件)@tom有空的列名@汤姆