[SAS] CALL SYMPUT
与
CALL
SYMPUTX
CALL SYMPUT
的功能是可以在
DATA step
内将值塞到一个
macro
变量里面。如果这个
macro
变量已经存在,那这个
call
就会更新该
macro
变量的值。
CALL SYMPUT
简介
CALL SYMPUT
基本用法:
CALL SYMPUT (
macro
便俩个
,
值
);
注:不会自动去除值前后的空白
可以分成常见的两种写法:
(1)
这一行
statement
可以將值
Cookie
塞入
macro
变量
Gift
里面,值
必须给予单引号
call symput (‘Gift’,'Cookie’);
(2) DATA set
变量
nage
的值塞入
macro
变量
a14
。这里
macro
变量名称为
a14
,存在
DATA step
的字串变量
myvar
內
myvar=’a14′;
call symput (myvar,nage);
CALL SYMPUT
范例
d
ata temp
;
set sashelp.class end=eoa;
if age gt 14 then nage+1;
if eoa then
call symput(‘n14′,put(nage,z2.))
;
run;
proc means data=temp;
title “N of student that age more than 14 years old:
&n14
“;
var age;
run;
程序中
put(nage,z2.)
,用
put
做数字转文字的转换,将
nage
算好的值变成文字。不用
put
函数也可以,因为
sas
会自动帮你转换,但是差别在于对对其余空格让版面很丑。
結果如下
↓
CALL SYMPUTX
简介
那
CALL SYMPUTX
基本写法:
CALL SYMPUTX (macro
变量
, text , );
上面提到
CALL SYMPUT
不会把值的前后空白去掉,但是
CALL SYMPUTX
会自动去点前后空白
而且第三个位置的
是选择性的设定,可由
3
种选择
分別是
G
(global symbol table)
、
L
(local symbol table)
、
F
(
当
macro
变量已存在与任一个
symbol table)
CALL SYMPUT
范例
在这个例子,
CALL SYMPUTX
被放在
cards
之前,因此在每次
DATA step
执行的时候,
CALL SYMPUTX
就会执行
此程式目的在抓取最后一笔
booktitle
的值
data
newbooks;
input booktitle $
1
-
40
;
call symputx('lasttitle',booktitle);
cards;
Hello Java Programming
My Encyclopedia of Newworks
Strategic Computer Programming
Everday Email Eriquette
run
;
%put The value of macro var LASTTTILE is &lasttitle.;
The value of macro var LASTTTILE is
Everday Email Eriquette
因为资料最后一笔值是「
Everday Email Eriquette
」,就会被写入
put
里面。
call symput 在data步中将值塞入宏变量http://www2.sas.com/proceedings/sugi29/052-29.pdf[SAS] CALL SYMPUT与CALLSYMPUTXCALL SYMPUT的功能是可以在DATA step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。CA
注:<>表示可选内容
data null;
call
sym
putx(’ items ', ’ leading and trailing blanks removed ‘,
‘lplace’);
call
sym
putx(...
2. Call
Sym
put('xxx','yyy');
3. select xxx into: yyy.
三种定义方式最大的
区别
是在MACRO函数内定义所生成的宏变量的类型不同:
Call
Sym
put在宏函数中定义的宏变量可以在函数外调用;而%let和 Select into则不能,因为这2种方法在MACRO函
call
sym
put的功能是可以在data step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。
用法: call
sym
put (macro变量, text);
注:不会自动去除值前后的空格
eg.将值Cookie塞入macro变量Gift里面,值必须给予单引号
call
sym
put ('Gift','Cookie')
本文是原创文章,转载请注明;
在实际数据挖掘建模过程,如果已有的变量也目标变量相关性不强,可以有多种衍生变量的方法,本代码提供一种暴力衍生的方式,对相关性最强的变量进行随机抽取,可按多种方式进行衍生,并选择与目标变量最相关度前n个变量入训练集,并映射到测试集。
代码在9.4m2环境测试可用。
%let lib=weier;
%let target=y;
%let id=uid;
data c...
SAS
中对于类别变量(离散)分布观察用proc freq,对于连续变量则用proc univariate来完成。
识别连续型变量的异常值通常称为盒形图,一般采用
proc univariate data=train plot;
var variable;
plot选项输出变量的茎叶图(观测数少)或者直方图(观测数多),盒形图,正态概率图。(同时输出这些图)
该方法只能识别某变
data _null_;
call
sym
put("t_year",put(intnx('day',date(),-1),year4.)); *昨天的当前年份;
call
sym
put("l_year",put(intnx('year',intnx('day',date(),-1),-1),year4.)); *昨天的上年年份;
call
sym
put("...
set table;
if lag(start_date) eq end_date then call
sym
put('flag','true');
else call
sym
put('flag','false');
%if &flag eq 'true' %then %do;
do i=1 to 50;
if lag(start_date) eq end_date then do;
output;
%end;
else %do;
do i=1 to 50;
if lag(start_date) ne end_date then do;
output;
%end;