Sas 获取过程报告中的跨变量值
(交叉张贴于) 我感兴趣的是在COMPUTE语句中调用Define语句的URL中使用跨变量的值 在下面的示例中,PROC REPORT是否可以让我在构建列时访问每个类型变量值的值…以便我可以将该值包含在URL链接中?我可以使用N变量从COMPUTE语句中访问值吗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 ;
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;
我相信你是对的。我的问题的答案是我无法得到跨变量的值…但我认为你的代码引导我找到了一个解决方案。谢谢。