楼主: 3fatty
2331 6

[求助]一段sas的编写 [推广有奖]

  • 0关注
  • 3粉丝

硕士生

16%

还不是VIP/贵宾

-

威望
0
论坛币
15178 个
通用积分
27.2822
学术水平
25 点
热心指数
28 点
信用等级
15 点
经验
1631 点
帖子
64
精华
1
在线时间
63 小时
注册时间
2006-4-12
最后登录
2023-12-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

data tmp1;
input id var1 var2 var3;
cards;
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1 1
;
run;

data tmp2;
input id var_nm $ value;
cards;
1 var1 2
2 var2 2
3 var3 2
4 var4 2
;
run;

data _null_;
set tmp2 end=final;
call symput(("id"||compress(_n_)),id);
call symput(("var_nm"||compress(_n_)),var_nm);
call symput(("value"||compress(_n_)),value);
if final then call symput("n",_n_);

run;

data tmp1;
set tmp1;
%do i=1 %to &n;
%if id&i=id %then %do;
&&var_nm&i=&&value&i;
%end;
run;

希望能实现第四个数据步的功能,但是我现在这样写是不对的,如何修改,谢谢

二维码

扫码加我 拉你入群

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

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

关键词:sas的 compress symput value Press 求助 SAS 编写

回帖推荐

pskywood 发表于6楼  查看完整内容

%macro test; data _null_; set tmp2 end=final; call symput(("id"||compress(_n_)),id); call symput(("var_nm"||compress(_n_)),var_nm); call symput(("value"||compress(_n_)),value); if final then call symput("n",_n_); run; data _null; set tmp1; call symput(("iid"!!compress(_n_)),id); run; data tmp1; set tmp1; %do i=1 %to &n; %if &&id&i=&&iid&i %then % ...

nktiger1 发表于2楼  查看完整内容

It need macro language. Please see code below: data tmp1; input id var1 var2 var3; cards; 1 1 1 1 2 1 1 1 3 1 1 1 4 1 1 1 ; run; data tmp2; input id var_nm $ value; cards; 1 var1 2 2 var2 2 3 var3 2 4 var4 2 ; run; data _null_; set tmp2 end=final; call symput(("id"||compress(_n_)),id); call symput(("var_nm"||compress(_n_)),var_nm); call symput(("value"||compress(_n_)), ...

本帖被以下文库推荐

沙发
nktiger1 发表于 2007-3-8 09:53:00 |只看作者 |坛友微信交流群
It need macro language. Please see code below:

data tmp1;
input id var1 var2 var3;
cards;
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1 1
;
run;

data tmp2;
input id var_nm $ value;
cards;
1 var1 2
2 var2 2
3 var3 2
4 var4 2
;
run;

data _null_;
set tmp2 end=final;
call symput(("id"||compress(_n_)),id);
call symput(("var_nm"||compress(_n_)),var_nm);
call symput(("value"||compress(_n_)),value);
if final then call symput("n",_n_);

run;

%macro a;
data tmp1;
set tmp1;
%do i=1 %to &n;
%if id&i=id %then %do;
&&var_nm&i=&&value&i;
%end;
%end;
run;
%mend;

%a
已有 1 人评分经验 论坛币 收起 理由
bakoll + 2 + 10 精彩帖子

总评分: 经验 + 2  论坛币 + 10   查看全部评分

使用道具

藤椅
Vulpecula 发表于 2007-3-8 10:35:00 |只看作者 |坛友微信交流群
果然是高手啊,很厉害的!

使用道具

板凳
Vulpecula 发表于 2007-3-8 10:36:00 |只看作者 |坛友微信交流群
高手啊,很厉害的!

使用道具

报纸
weihancool 发表于 2007-3-8 13:42:00 |只看作者 |坛友微信交流群
高手!!!!
国士无双

使用道具

地板
pskywood 发表于 2007-3-19 14:22:00 |只看作者 |坛友微信交流群
%macro test;
data _null_;
set tmp2 end=final;
call symput(("id"||compress(_n_)),id);
call symput(("var_nm"||compress(_n_)),var_nm);
call symput(("value"||compress(_n_)),value);
if final then call symput("n",_n_);
run;
data _null;
set tmp1;
call symput(("iid"!!compress(_n_)),id);
run;
data tmp1;
set tmp1;
%do i=1 %to &n;
%if &&id&i=&&iid&i %then %do;
&&var_nm&i=&&value&i;
%end;
%end;
run;
%mend test;
%test
前两段是一样的。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 2 + 10 精彩帖子

总评分: 经验 + 2  论坛币 + 10   查看全部评分

使用道具

7
maximus11111 发表于 2007-3-19 17:28:00 |只看作者 |坛友微信交流群

好牛啊,才学!多指教

使用道具

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

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

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

GMT+8, 2024-4-25 09:03