h******e 发帖数: 1791 | |
P****D 发帖数: 11146 | |
D******n 发帖数: 2836 | 3 good thats something i have been looking for.
【在 P****D 的大作中提到】 : http://www2.sas.com/proceedings/sugi26/p095-26.pdf
|
D******n 发帖数: 2836 | 4 很可惜這種辦法用在數有where clause的dataset的obs是最慢的。
我做了一個小測試。一個1.8million的data set. 數當var1>40時的obs的數量。分別用
了,
sql,data step,還有下面那個用file handle的方法,運行時間(秒)如下:
real_time cpu_time
sql 53 34
data 86 107
file 188 182
【在 P****D 的大作中提到】 : http://www2.sas.com/proceedings/sugi26/p095-26.pdf
|
i******n 发帖数: 839 | 5 DATA EMPTY;
LENGTH CHART1 $10.;
/* DO I=1 TO 9;
CHART1="MITBBS"; OUTPUT;
END;*/
RUN;
DATA EMPTY;
SET EMPTY;
IF CHART1="MITBBS";
RUN;
DATA _NULL_;
IF _N_ = 0 THEN SET EMPTY NOBS=NOBS;
CALL SYMPUT ("SIZE", PUT(NOBS, BEST.));
RUN;
%PUT &SIZE; |
s******r 发帖数: 1524 | 6 how about
proc sql;
select count(*) into : countt
from test(obs=1);quit;run;
【在 D******n 的大作中提到】 : 很可惜這種辦法用在數有where clause的dataset的obs是最慢的。 : 我做了一個小測試。一個1.8million的data set. 數當var1>40時的obs的數量。分別用 : 了, : sql,data step,還有下面那個用file handle的方法,運行時間(秒)如下: : real_time cpu_time : sql 53 34 : data 86 107 : file 188 182
|
A*******s 发帖数: 3942 | 7 i don't get it. it would be 1.
and dashagen was talking about counting with condition.
【在 s******r 的大作中提到】 : how about : proc sql; : select count(*) into : countt : from test(obs=1);quit;run;
|
s******r 发帖数: 1524 | 8 It should be 0 if the dataset is empty. It will reduce the processing time
if the dataset is huge.
【在 A*******s 的大作中提到】 : i don't get it. it would be 1. : and dashagen was talking about counting with condition.
|
i******n 发帖数: 839 | 9 another way I just figured out.
DATA check;
dsid=open("empty");/*empty is the data set name*/
size= attrn(dsid, 'nlobs');/*size is what you want*/
RUN;
proc print data=check;
run; |
r********e 发帖数: 1686 | 10 我好菜,可是为啥不直接用proc contents呢? |
i******n 发帖数: 839 | 11 This is much better one,
proc contents data=empty noprint out=out;
run;
proc print data=out;
title "proc content";
var memname nobs;
run;
【在 r********e 的大作中提到】 : 我好菜,可是为啥不直接用proc contents呢?
|