(Cross SAS Communities site)
我有兴趣在COMPUTE语句中使用我的Call Define语句的URL中的ACROSS变量的值。
在下面的示例中,PROC REPORT可以让我访问每个TYPES变量值的值......正在构建列,以便我可以在URL链接中包含该值吗?我可以使用N变量从COMPUTE语句中访问该值吗?
options missing="";
data REPORT;
input VARIABLE $ TYPES $;
datalines;
VAR1 TYPE1
VAR1 TYPE2
VAR1 TYPE3
VAR1 TYPE5
;
PROC FORMAT ;
VALUE $TYPE
'TYPE1'='Type 1'
'TYPE2'='Type 2'
'TYPE3'='Type 3'
'TYPE4'='Type 4'
'TYPE5'='Type 5';
Run ;
proc report data=REPORT nowd;
column ("Variables" variable) ("TYPES" types,n);
define variable / '';
define types / across '' format=$type. preloadfmt;
define n / '' format=comma12.;
compute types;
If _c2_>0 then
call define("_c2_","style","style={url = '<MY URL>' );
endcomp;
run;
答案 0 :(得分:1)
您可以按照您构建的方式访问单个值的值:
proc report data=REPORT nowd;
column ("Variables" variable) ("TYPES" types,n);
define variable / '';
define types / across '' format=$type. preloadfmt;
define n / '' format=comma12.;
compute types;
If _c2_>0 then
call define("_c2_","style",cats("style={url = '",_C2_,"'" ));
endcomp;
run;
当然,您无法访问行级值,因为跨变量不会以这种方式工作。
或者,如果您正试图获得&#34; Type 2&#34;等等,我想你会走这条路(使用格式, COL 而不是&#34; C2 &#34;)。我认为没有办法直接访问整个价值本身。
由于您可能会通过使用宏来单独构建这些计算块,因此我可能会避开该格式,并且如果可以的话,直接将变量的值传递给宏。如果没有,则格式可能有用。
PROC FORMAT ;
VALUE $TYPE
'TYPE1'='Type 1'
'TYPE2'='Type 2'
'TYPE3'='Type 3'
'TYPE4'='Type 4'
'TYPE5'='Type 5';
value NType
1='Type 1'
2='Type 2'
3='Type 3'
4='Type 4'
5='Type 5';
Run ;
proc report data=REPORT nowd;
column ("Variables" variable) ("TYPES" types,n);
define variable / '';
define types / across '' format=$type. preloadfmt;
define n / '' format=comma12.;
compute types;
If _c2_>0 then
call define(_COL_,"style",cats("style={url = '",put(_COL_,NType.),"'" ));
endcomp;
run;