pobel 发表于 2012-9-12 09:41 
data test;
input stkcd1 $ stkcd2 $ corr;
cards;
谢谢老师!
运行您的程序是证券的,但是我自己的数据集计算出来不对。还是有很多都没有删除。我将日志附了上来。并且是在下面程序中进行的。麻烦老师帮忙看看错在什么地方?
谢谢!
data pairs;
set pairs.ppp_1995_1;
if stkcd1<stkcd2;
format s1 $6. s2 $6.;
s1=compress(stkcd1);
s2=compress(stkcd2);
run;
proc sort data=pairs;by year month sse;run;
data wanted;
set pairs;
length stk_list $100;
retain stk_list " ";
if find(stk_list,s1,"ti") or find(stk_list,s2,"ti") then delete;
stk_list=catx(" ",stk_list,s1,s2);
drop stk_list s1 s2;
run;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
日志
344 data pairs;
345 set pairs.ppp_1995_1;
346 if stkcd1<stkcd2;
347 format s1 $6. s2 $6.;
348 s1=compress(stkcd1);
349 s2=compress(stkcd2);
350 run;
NOTE: 数值已转换为字符值,位置:(行:列)。
348:13 349:13
NOTE: 有 82082 个从数据集 PAIRS.PPP_1995_1 读取的观测。
NOTE: 数据集 WORK.PAIRS 有 41041 个观测和 7 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.07 秒
CPU 时间 0.07 秒
351
352 proc sort data=pairs;by year month sse;run;
NOTE: 有 41041 个从数据集 WORK.PAIRS 读取的观测。
NOTE: 数据集 WORK.PAIRS 有 41041 个观测和 7 个变量。
NOTE: “PROCEDURE SORT”所用时间(总处理时间):
实际时间 0.07 秒
CPU 时间 0.03 秒
353
354 data wanted;
355 set pairs;
356 length stk_list $100;
357 retain stk_list " ";
358 if find(stk_list,s1,"ti") or find(stk_list,s2,"ti") then delete;
359 stk_list=catx(" ",stk_list,s1,s2);
360 drop stk_list s1 s2;
361 run;
NOTE: 有 41041 个从数据集 WORK.PAIRS 读取的观测。
NOTE: 数据集 WORK.WANTED 有 32906 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.06 秒
CPU 时间 0.06 秒
362
363 /*For Check*/
364 data check;
365 set wanted(keep=stkcd1 rename=(stkcd1=stkcd))
366 wanted(keep=stkcd2 rename=(stkcd2=stkcd));
367 run;
NOTE: 有 32906 个从数据集 WORK.WANTED 读取的观测。
NOTE: 有 32906 个从数据集 WORK.WANTED 读取的观测。
NOTE: 数据集 WORK.CHECK 有 65812 个观测和 1 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
368
369 proc sort data=check nodup;by stkcd;run;
NOTE: 有 65812 个从数据集 WORK.CHECK 读取的观测。
NOTE: 65536 个重复观测已删除。
NOTE: 数据集 WORK.CHECK 有 276 个观测和 1 个变量。
NOTE: “PROCEDURE SORT”所用时间(总处理时间):
实际时间 0.07 秒
CPU 时间 0.14 秒
最后的Check数据集中仍然存在重复的记录,被删除了65536条记录