请选择 进入手机版 | 继续访问电脑版
楼主: hanamiqi
5771 6

求问怎么写宏将一个数据集的按某一个变量取值来拆分数据集,并对生成的每个数据集做分 [推广有奖]

  • 0关注
  • 0粉丝

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
9 小时
注册时间
2015-7-6
最后登录
2018-3-27

hanamiqi 在职认证  发表于 2015-10-23 09:29:52 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在想写的一个宏的需求是这样的,有一张表,其中有3列,第一列是行业编号,第二列是和第三列分别是2个数值变量(后面分析使用到)。行业编号的取值水平有400多个(不固定,随时间在变化),每个取值水平有若干个观测(大多在180左右)
1:首先,我想把这张表按照行业编号的取值进行表拆分,拆分后的每个数据集以 ”ds_行业编号取值" 命名,这一步生成400多个行业数据集
2:对400个数据集的第二列和第三列进行0-1标准化( 公式:value-min/max-min )
3:对标准化后的数据集进一步处理

现在碰到的问题是第1步和第2步怎么用宏来写,数据集以SASHELP.PRDSAL2为例吧,假设PRODTYPE是行业编号,ACTUAL和PREDICT分别是第二列和第三列
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据集 predict SASHELP actual value 命名 行业 左右

zhengbo8 发表于 2015-10-23 23:11:03 |显示全部楼层 |坛友微信交流群
没示例数据,想起来比较抽象~~

使用道具

teqel 发表于 2015-10-24 01:21:51 |显示全部楼层 |坛友微信交流群
应该还有一列是时间

使用道具

木叶知秋 发表于 2015-10-24 12:07:41 |显示全部楼层 |坛友微信交流群
下面是实现拆分的,稍微改下就可以实现2、3,自己动手吧,输入数据集第一列必须为分类变量
  1. /*按变量值拆分数据集*/
  2. %macro split(ds);
  3.         %let dsid=%sysfunc(open(&ds));
  4.         %if &dsid gt 0 %then %let typename=%sysfunc(varname(&dsid,1));/*获取分类变量名*/
  5.         %let dsid=%sysfunc(close(&dsid));
  6.         proc sql noprint;
  7.         select distinct &typename into: names separated by ','/*所有类别放入宏names,逗号分隔*/
  8.         from &ds;
  9.         quit;
  10.         %let i=1;
  11.         %do %while(%scan(%quote(&names),&i,',') ne %str());/*子串不为空是循环拆分数据集*/
  12.                 %let dname=%scan(%quote(&names),&i,',');
  13.                 data ds_&dname;
  14.                 set &ds;
  15.                 where &typename = "&dname";
  16.                 run;
  17.                 %let i=%eval(&i.+1);
  18.         %end;
  19. %mend split;

  20. proc sql;
  21. create table test as
  22. select PRODTYPE,ACTUAL,PREDICT
  23. from SASHELP.PRDSAL2;
  24. quit;
  25. %split(test);
复制代码



使用道具

红通通 发表于 2016-11-9 16:24:36 |显示全部楼层 |坛友微信交流群
木叶知秋 发表于 2015-10-24 12:07
下面是实现拆分的,稍微改下就可以实现2、3,自己动手吧,输入数据集第一列必须为分类变量
非常好,赞!谢谢!

使用道具

pingmin555 发表于 2017-2-22 14:14:42 |显示全部楼层 |坛友微信交流群
收下了  谢谢

使用道具

elzzzman 发表于 2020-2-13 23:00:29 |显示全部楼层 |坛友微信交流群
木叶知秋 发表于 2015-10-24 12:07
下面是实现拆分的,稍微改下就可以实现2、3,自己动手吧,输入数据集第一列必须为分类变量
学到了!!太感谢了,大佬!救命了

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 09:09