楼主: jintianxiu
4330 12

[原创博文] 怎样使用循环 宏 生成500个小数据集,大侠相助啊!! [推广有奖]

  • 2关注
  • 0粉丝

本科生

8%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
590 点
帖子
81
精华
0
在线时间
38 小时
注册时间
2010-3-6
最后登录
2012-9-21

楼主
jintianxiu 发表于 2012-5-17 10:48:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在整理分析数据的过程中遇到这样的一个问题:首先建立一个宏是生成数据集firm1,但是由于需要生成500个数据集。我想使用循环语句简化过程。%sep(n = )是生成数据集firm&n的宏过程。我使用了 data firmt;
do i = 1 to 500 by 1;
%sep(n = i);
end;
set firm1 - firm500;
run; 但是结果 貌似 其不能识别 i 在循环中的取值呢,无法得出结果。。。
我想从这个程序中得到的结果是500个小数据集和 总的一个数据集,如果不能兼得 希望得到500个小数据集。各位大侠,路见不平拔刀相助,谢谢~~
二维码

扫码加我 拉你入群

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

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

关键词:数据集 小数据 FIRM 循环语句 Data 程序

回帖推荐

乾坤神龙 发表于4楼  查看完整内容

不知道是否对你有帮助!我的效果只是简单的生成多个相同的数据集,最后和在一起!!

本帖被以下文库推荐

沙发
乾坤神龙 发表于 2012-5-17 11:14:49
这500个小数据集,数据集里面是包含什么数据?全部一样吗?

藤椅
jintianxiu 发表于 2012-5-17 11:20:24
乾坤神龙 发表于 2012-5-17 11:14
这500个小数据集,数据集里面是包含什么数据?全部一样吗?
逐次增加一个变量的,即部分相同,就是每个小数据集data2比data1多一个变量,data3比data2多一个变量。如果这个影响整合变量,
我的focus是在如何简单的循环生成500个数据集,因为要重复500次,写到手酸哇

板凳
乾坤神龙 发表于 2012-5-17 11:22:39
jintianxiu 发表于 2012-5-17 11:20
逐次增加一个变量的,即部分相同,就是每个小数据集data2比data1多一个变量,data3比data2多一个变量。如 ...
不知道是否对你有帮助!我的效果只是简单的生成多个相同的数据集,最后和在一起!!
  1. %macro dd(n=);
  2. %do i=1 %to &n.;
  3. data a&i;
  4. a=1;
  5. b=2;
  6. run;
  7. %end;
  8. run;
  9. data all;
  10.   set %do i=1 %to &n.;a&i.%end;;
  11. run;
  12. %mend;
  13. %dd(n=2);
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
jintianxiu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
jintianxiu 发表于 2012-5-17 14:03:24
乾坤神龙 发表于 2012-5-17 11:22
不知道是否对你有帮助!我的效果只是简单的生成多个相同的数据集,最后和在一起!!
大受启发,谢谢童鞋!!

地板
jintianxiu 发表于 2012-5-18 10:07:54
乾坤神龙 发表于 2012-5-17 11:22
不知道是否对你有帮助!我的效果只是简单的生成多个相同的数据集,最后和在一起!!
童鞋,我有个小小的问题,在你的程序中a&i. %end;; 中end后面有两个分号,我由于是入门不久 可否略告知 是为何?a&i后面的点号. 是可有可无的么?
万分感谢~~

7
乾坤神龙 发表于 2012-5-18 14:09:42
jintianxiu 发表于 2012-5-18 10:07
童鞋,我有个小小的问题,在你的程序中a&i. %end;; 中end后面有两个分号,我由于是入门不久 可否略告知 是 ...
前一个分号代表循环的结束,后一个分号代表set的结束!

8
hcydlee 发表于 2012-5-18 15:09:17
jintianxiu 发表于 2012-5-18 10:07
童鞋,我有个小小的问题,在你的程序中a&i. %end;; 中end后面有两个分号,我由于是入门不久 可否略告知 是 ...
那个循环的作用是把N个数据集合在一起, 编译以后就是 set a1 a2 ...an; 个人感觉最好在a&i.后面再加空格,此外那个点号起到分割的作用.
80 字节以内
不支持自定义 Discuz! 代码

9
空气骑士 发表于 2012-5-18 16:56:51
%macro create(prefix,n);
data &prefix.1;
x1=1;
run;
%do i=2 %to &n;
%let j=%eval(&i-1);
data &prefix.&i;set &prefix.&j;
x&i=1;
run;
%end;
%mend;
%create(firm,500);
产生500个数据集,后一个在前一个的基础上加一个变量,不过不知道楼主的数据到底是什么样的,初值全部是1,赋值如果没规律的话很难循环吧。。。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

10
webgu 发表于 2012-5-18 17:48:14
空气骑士 发表于 2012-5-18 16:56
%macro create(prefix,n);
data &prefix.1;
x1=1;
两个循环器,不错。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 03:23