とという2 つの変数を持つという名前のデータセットで表される有向グラフがあるとします。SAS Data Step を使用して、(1) ノードの数を数え、(2) エッジの数を数えます。links
from_id
to_id
データlinks
セットが次のようになっているとします。
from_id to_id
----------------
1 2
2 3
3 1
3 2
この例では、3 つのノードと 4 つのエッジがあります。( には重複するエッジがないと仮定できます)links
。ノードは 1、2、3 です。エッジは 1->2、2->3、3->1、3->2 です。
以下は、ノードとエッジをカウントするために SAS Data Step を proc sql と組み合わせて使用する SAS マクロです。それは完全に機能しますが、SAS Data Step を使用して、ノードとエッジのカウントが (潜在的に) より高速に行われるようにしたいと考えています。
/* display number of nodes and edges for graph */
%macro graph_info(links);
data nodes;
set &links;
node_id = from_id;
output;
node_id = to_id;
output;
keep node_id;
run;
proc sql noprint;
select count(distinct node_id) into :numNodes from nodes;
quit;
proc datasets lib=work nolist;
delete nodes;
quit;
proc sql noprint;
select count(*) into :numEdges from &links;
quit;
%put Nodes: &numNodes;
%put Edges: &numEdges;
%mend;