求助:topsis法SAS宏-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

求助:topsis法SAS宏

求助:topsis法SAS宏

发布:yangz98 | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

获取电子版《CDA一级教材》

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

本人SAS菜鸟一枚,十一假期,闲来没事就在CNKI上面找了一篇文章《Topsis法在SAS宏中的统计实现》,想要学习一下SAS宏,但是一直出错,特别是%let语句定义宏变量以及%let语句中镶嵌引用宏变量,请求各位大侠帮忙修改一 ...
免费学术公开课,扫码加入


本人SAS菜鸟一枚,十一假期,闲来没事就在CNKI上面找了一篇文章《Top sis 法在SAS 宏中的统计实现》,想要学习一下SAS宏,但是一直出错,特别是%let语句定义宏变量以及%let语句中镶嵌引用宏变量,请求各位大侠帮忙修改一下下面这段程序,下附原参考文献和自己从里面弄得程序:WARNING: Apparent symbolic reference VAR not resolved.ERROR: A character operand was found in the %EVAL function or %IF condition where a numerc operand is required. The condition was: & &var&i.=ERROR: The condition in the %DO %UNTIL loop, & &var&i.=, yielded an invalid or missing value, . The macro will stop executing.
%macro topsis(database=,vara=,vark=,weight=0);/*database:被分析变量所在的数据集
vara:要分析的变量
vark:结果中保留的变量
weight:权重值可取0和1,默认去0*/
%let i=1;%let var&i.=%scan(&vara.,&i.,'');
%do %until(& &var&i.=);
%let i=%eval(&i.+1);
%let var&i.=%scan(&vara.,&i.,'');
%end;
%let var_num=%eval(&i.-1);
%if &weight. %then %do;
data top_1 top_2;
set &database. end=last;
if last then output top_2;
else output top_1;
run;
%end;
%else %do;
data top_1;
set &database.;
data top_2;
%do i=1 %to &var_num.; & &var. &i.; %end; run; %end;
data _null_;set top_1 end=last;
if last then call symput('obj_num',compress(_n_));
%let sqr_str=;
data top_a;set top_1 end=last;%do i=1 %to &var_num.;
& &var. &i.._2=& &var.&i.**2;
%let sqr_str=&sqr_str & &var&i..2;%end;
proc transpose data=top_a(keep=&sqr_str.) prefix=top_m out=top_b;run;
proc transpose data=top_a(keep=&vara.) prefix=top_n out=top_c;run;
proc transpose data=top_2(keep=&vara.) prefix=top_w out=top_w;run;
data top_d;set top_b;z=sum(of top_m1-top_m&obj_num.);
%let min_str=;%let max_str=;
data top_e;merge top_c top_d top_w;%do i=1 %to &obi_num.;z&i.=top_n&i./sqrt(z);
%end;
max=max(of z1-z&obj_num.);min=min(of z1 z&obj_num.);
%do i=1 %to %obj_num.;d_max&i.=top_w1*(z&i.-max)**2;d_min&i.=top_w1*(z&i.-min)**2;
%let max_str=&max_str d_max&i;%let min_str=&max_str d_min&i;%end;
proc transpose data=top_e(keep=&max_str.) prefix=max out=top_f;run;
proc transpose data=top_e(keep=&min_str.) prefix=min out=top_g;run;
data top_h(keep=&vark. d_max d_min c);merge top_1 top_f top_g;
max_sum=sum(of max1-max&var_num.);
min_sum=sum(of min1-min&var_num.);
d_max=sqrt(max_sum);d_min=sqrt(min_sum);C=d_min/(d_max+d_min);
proc rank data=top_h descending out=topsis_result;ranks order;var c;run;
proc print;title "The Topsis Report of &vark.";run;
%mend topsis;
data SF236;input city $ x1-x8;
format city $ 5. x1-x8 6.2;
cards;
CS 72.07 64.08 75.40 46.85 69.10 78.83 81.78 75.63
SZ 74.58 63.17 68.04 53.07 70.87 76.57 71.86 68.91
SY 77.79 54.77 72.32 61.83 69.35 73.65 63.41 71.75
GZ 82.01 71.03 73.10 58.93 68.83 73.00 72.27 72.64
CD 79.78 79.06 78.27 56.77 70.85 82.57 82.96 77.54
TJ 66.37 59.91 73.16 69.27 79.09 67.92 68.14 57.12
SH 67.11 76.15 72.37 54.63 68.13 77.22 77.71 78.63
;
run;
proc format;
value $ cityfmt CS='ChangSha' SZ='SuZhou' SY='ShenYang' GZ='GuangZhou' CD='ChengDu' TJ='TianJin' SH='ShangHai';run;
proc print data=SF236;format city $cityfmt.;title "Data of SF236";run;
%topsis(database=SF236,vara=x1-x8,vark=city,weight=0);
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-2658285-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
数据分析师 人大经济论坛 大学 专业 手机版
联系客服
值班时间:工作日(9:00--18:00)