添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

[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;