楼主: appleqiuqiu
3120 7

[问答] 如何用SAS宏实现两两数据集的merge [推广有奖]

  • 0关注
  • 1粉丝

已卖:773份资源

副教授

41%

还不是VIP/贵宾

-

威望
0
论坛币
3666 个
通用积分
2.9200
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4191 点
帖子
133
精华
0
在线时间
1514 小时
注册时间
2010-4-27
最后登录
2022-6-22

楼主
appleqiuqiu 发表于 2014-12-13 17:09:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,我现在有两组文件,一组文件命名为X1,X2,X3,。。。。X124,另一组文件命名为C2,C3,C4,。。。C124,我现在希望把X1和C2 merge成一个数据集命名为out1,X2和C3 merge成一个数据集命名为out2,以此类推,想了半天不知道该如何用宏实现啊。。。请给位高手赐教,下面是我的一个初步想法(这是错的):

  1. %macro clean(first=2,last=124);
  2. %local num;
  3. %do num=&first %to &last;
  4. data out&num.;merge c&num. x&num.;by id1;run;
  5. %end;
  6. %mend clean;
  7. %clean(first=2,last=124);
复制代码
这样做只能实现X1和C1这样的merge,不能实现我的,我估计是不在这个的基础上改改就能实现呢。。。。求各位小伙伴只招!!!
二维码

扫码加我 拉你入群

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

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

关键词:Merge SAS宏 如何用 数据集 First 如何

沙发
appleqiuqiu 发表于 2014-12-13 17:35:39
自己顶,求助我的牛X好友们及各路大神![cry][cry]

藤椅
就喜欢马 发表于 2014-12-13 19:21:55
刚刚理解题目错了,这回应该能回答楼主的问题
  1. %macro m;
  2. %do i=1 %to 124;
  3. %let j=%eval(&i+1);
  4. data out&i;
  5. merge x&i c&j;
  6. run;
  7. %end;
  8. %mend;
  9. %m;
复制代码


已有 1 人评分论坛币 收起 理由
admin_kefu + 30 根据规定进行奖励

总评分: 论坛币 + 30   查看全部评分

板凳
ziyenano 发表于 2014-12-13 20:07:30
%macro clean(first=,last=);
%do num= &first %to %eval(&last-1);
%let num1=%eval(&num+1);
data out&num.;
merge c&num  x&num1;
by id1;
run;
%end;
%mend clean;

data c1;
id1=1;x=1;
data c2;
id1=1;x=2;
data c3;
id1=1;x=3;

data x1;
id1=1;y=1;
data x2;
id1=1;y=2;
data x3;
id1=1;y=3;
run;

%clean(first=1,last=3);
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
小明12345 + 1 + 1 + 1 精彩帖子

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

报纸
appleqiuqiu 发表于 2014-12-13 21:05:46
就喜欢马 发表于 2014-12-13 19:21
刚刚理解题目错了,这回应该能回答楼主的问题
多谢高手!已验证,解决了我的问题,请教下这里eval这个函数是什么意思?本想评分,发现没论坛币。。。

地板
appleqiuqiu 发表于 2014-12-13 21:07:12
ziyenano 发表于 2014-12-13 20:07
%macro clean(first=,last=);
%do num= &first %to %eval(&last-1);
%let num1=%eval(&num+1);
多谢老朋友!就是这个eval解决了问题啊!

7
就喜欢马 发表于 2014-12-13 21:26:03
appleqiuqiu 发表于 2014-12-13 21:05
多谢高手!已验证,解决了我的问题,请教下这里eval这个函数是什么意思?本想评分,发现没论坛币。。。
没事儿,不客气。
%eval就是执行计算函数内整数的值,宏里的整数运算赋值都要用到它,类似于%sysfunc,可以参考sas帮助

8
appleqiuqiu 发表于 2014-12-13 21:40:46
就喜欢马 发表于 2014-12-13 21:26
没事儿,不客气。
%eval就是执行计算函数内整数的值,宏里的整数运算赋值都要用到它,类似于%sysfunc,可 ...
原来如此,我就是想写运算,在宏里居然还是这样用的,学习了!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 21:16