Sas 获取过程报告中的跨变量值

Sas 获取过程报告中的跨变量值,sas,Sas,(交叉张贴于) 我感兴趣的是在COMPUTE语句中调用Define语句的URL中使用跨变量的值 在下面的示例中,PROC REPORT是否可以让我在构建列时访问每个类型变量值的值…以便我可以将该值包含在URL链接中?我可以使用N变量从COMPUTE语句中访问值吗 options missing=""; data REPORT; input VARIABLE $ TYPES $; datalines; VAR1 TYPE1 VAR1 TYPE2 VAR1 TYPE3 VAR1 TYPE5 ;

(交叉张贴于)

我感兴趣的是在COMPUTE语句中调用Define语句的URL中使用跨变量的值

在下面的示例中,PROC REPORT是否可以让我在构建列时访问每个类型变量值的值…以便我可以将该值包含在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;
选项缺失=”;
数据报告;
输入变量$TYPES$;
数据线;
VAR1类型1
VAR1类型2
VAR1类型3
VAR1类型5
;
PROC格式;
值$TYPE
“类型1”=“类型1”
“类型2”=“类型2”
“类型3”=“类型3”
“类型4”=“类型4”
‘TYPE5’=‘TYPE5’;
跑
proc report data=report nowd;
列(“变量”变量)(“类型”类型,n);
定义变量/“”;
定义类型/跨“”格式=$type。预处理FMT;
定义n/''格式=comma12。;
计算类型;
如果_c2 uu>0,则
调用define(“c2_u”,“style”,“style={url=”);
endcomp;
跑
您可以访问单个值的值,方法如下:

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;
当然,您不能访问行级别的值,因为跨变量不是这样工作的

或者,如果您试图在名称中输入“type2”等,我认为您应该这样做(使用格式,使用COL而不是“C2”)。我不认为有办法直接访问cross值本身

由于您可能是通过使用宏来单独构造这些计算块,因此我可能会避开该格式,如果可以的话,直接将变量的值传递给宏。如果不可以,那么该格式可能会有用

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;

我相信你是对的。我的问题的答案是我无法得到跨变量的值…但我认为你的代码引导我找到了一个解决方案。谢谢。