云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > sas试题课笔记一

sas试题课笔记一

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 12:43:03

如有你有帮助,请购买下载,谢谢!

/●宏编程技术●/

●怎样显示宏变量的值?解释下面的程序;

/●注意在解释程序时每一句需要解释且结果要解释●/

data _null_; /●通过数据步处理数据,但不建立数据集●/ %let a=first; /●建立宏变量a,值为first●/

%let b=macro variable; /●用宏程序语句%let定义宏变量,一个%let语句只

能定义一个宏变量;

%put &a !!! &b !!!; /●‘&宏变量名’引用宏变量的值;%put语句显示

宏变量的值,将文本输出到 SAS的日志窗口;

/●在log窗口输出 first !!! macro variable !!!●/

run; /●提交程序●/

●答 %put是显示宏变量最简单的方法;

/●9——解释并调用下面一段宏●/

%macro names(name, number); ●定义含参数的宏,宏参数是一种特殊的宏变

量;

%do n=1 %to &number; /●利用宏循环语句循环生成一系列字符串,循环

宏变量n从1到&number●/

&name&n /●调用宏变量name和宏变量n,生成字符串●/ %end; /●结束宏循环语句●/ %mend names; /●结束宏names的定义●/ %names(sas,6); /●调用宏names●/

/●11.在数据步中变量x的值赋于给宏变量A时这两种程序都可以吗●/

call symput('A',x); ●将变量的值赋于宏变量,一个子程序只

能将一个变量的值赋于宏变量;

%let A=x; ●%let语句定义的是宏变量的值,调用宏变量A时,相当于

调用了字符串x;

●答:不可以,应该用call symput('A',x)%let定义的宏变量,其值为赋值 符号后面的字符串'X',不会进行变量运算; data a;

set data.class nobs=nobs; call symput ('b',nobs); %let a=nobs;

%put &a &b; ●从下面的日志窗口的结果可以看出宏变量a的值被定义

为字符串‘nobs’而宏变量b的定义为变量nobs的值;

run;

/● data a;

26 set data.class nobs=nobs; 27 call symput ('b',nobs); 28 %let a=nobs; 29 %put &a &b; nobs 19 30 run;

1页

如有你有帮助,请购买下载,谢谢!

NOTE: 数字值已转换为字符值,位置:(行:列)。 ●/

/●12.解释下面语句的结果●/ %let x=5;

%let y=%eval(&x+200);●%eval()宏计算函数可以将整数文本暂时转换为一

个数值并对整数值的表达式进行计算,结果也取整数;

%let z=&x+200; ●只是将一个字符串赋予宏变量z,将宏变量x的值+200

形成的表达式赋给Z;

%put &y &z;

●205 5+200——日志窗口的结果;

data %substr(&sysday,1,3);● 创建了空数据集/临时数据集work.wed

数据集的名字为系统宏变量sysday的值的前三个字符形成 的字符串,sysday的值为今天星期几的英文单词;

run;

●宏字符函数%substr()——提取字符串中的字串

produce a substring of argument, beginning at position, for length number of characters.

syntax: %SUBSTR (argument, position<, length>);

●自动宏变量sysday——Contains the day of the week that a SAS job or session began executing Details You can use SYSDAY to check the current day before executing code that

you want to run on certain days of the week, provided you initialized your SAS session today. (1,9)wednesday, (2,9)EDNESDAY

(3,9)DNESDAY——不明白;

/●17——使用%include语句将一个大数据集拆分成多个小数据集

根据数据集resdat.qttndist中的变量stkcd将其拆分成多个数据集,其中stkcd的格式为$6.;●/ data a;

set data.qttndist; by stkcd;

if last.stkcd; keep stkcd;

put n;/●有什么作用?●/ run;

data _null_;

set a nobs=n;/●什么意思?●/ file 'd:\\dc\\number.txt'; a=right('%a('); b=',stk)';

put a $stkcd $b $;

2页

如有你有帮助,请购买下载,谢谢!

run;

%macro a(name,s); data ex.&s&name; set data.qttndist; if stkcd=&name; run;

%mend a;

%include \; /●老师的方法●/

proc sort data=data.qttndist out=stkcd(keep=stkcd); by stkcd;/●运行出错为什么?●/ run;

data stkcd(keep=stkcd); set data.qttndist; by stkcd;

if last.stkcd;/●选取每个by组中的最后一条记录,以去掉重复的股票名称●/ run;

data _null_; set stkcd;

file 'd:\\dc\\split.txt'; a='%split('; b=');';

put a $ stkcd $ b $; run;

%macro split(stkcd);

data stk&stkcd; /●stk是所有数据集都相同的的故不需要设为

宏参数——体会宏程序的本质及其构造思路——由一至多●/

set data.qttndist; if stkcd=&stkcd; run;

%mend split;

%include 'd:\\dc\\split.txt';

/●18●/●利用上一题生成的数据集。。SAS数据集导出多个TXT文本。设数据集名称为resdat.qttndist,

要求导出3个文本000001.txt,000002.txt,000003.txt,变量名及变量格式如表14.9所示。;; %macro txt(name); data _null_;

format stkcd $6. lstknm $12. stkcdotrd $6. stknmotrd $12. date yymmdd10. oppr 8.2 hipr 8.2 lopr 8.2 clpr 8.2 trdvol 15.

trdsum 20.2 ; set ex.stk&name;

file \; /●此处要多加注意——宏变量

只能在双引号内引用●/

3页

搜索更多关于: sas试题课笔记一 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

如有你有帮助,请购买下载,谢谢! /●宏编程技术●/ ●怎样显示宏变量的值?解释下面的程序; /●注意在解释程序时每一句需要解释且结果要解释●/ data _null_; /●通过数据步处理数据,但不建立数据集●/ %let a=first; /●建立宏变量a,值为first●/ %let b=macro variable; /●用宏程序语句%let定义宏变量,一个%let语句只能定义一个宏变量; %put &a !!! &b !!!; /●‘&宏变量名’引用宏变量的值;%put语句显示宏变量的值,将文本输出到 SAS的日志窗口; /●在log窗口输出 first !!! macro variable !!!●/ <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com