楼主: nomad5
2635 2

[原创博文] 变量名的问题 [推广有奖]

  • 0关注
  • 2粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
94 个
通用积分
1.0000
学术水平
13 点
热心指数
13 点
信用等级
11 点
经验
1898 点
帖子
90
精华
0
在线时间
114 小时
注册时间
2010-12-18
最后登录
2022-5-2

楼主
nomad5 发表于 2012-3-13 17:10:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在sas中。

数据集中存在变量
var1 var2 var3 adtc bdtc cdtc ddtc edtc ……
data list;
set list;
adt=input(adtc, best.);
bdt=input(bdtc, best.);
cdt=input(cdtc, best.);
ddt=input(ddtc, best.);
……
run;
如果变量名的后三位是‘dtc’, 那么生成一个新的变量后面两个是‘dt’。
无法判断存在多少个变量名后三位是‘dtc’的。
我该怎么写这个程序呢?

谢谢
二维码

扫码加我 拉你入群

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

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

关键词:Input Best list Data Est 程序

沙发
nomad5 发表于 2012-3-13 19:33:51
自己的问题自己回复
万分感谢crackman,是看了他的帖子‘跟crackman读sas程序(106)—批量修改变量名’改的。


data list;
    input aaa adtc bdtc cdtc ddtc edtc@@;
    datalines;
    0 1 2 3 4 5
    ;
run;

ods listing close;
ods output position = temp;
proc contents data = list varnum;
run;
ods listing;

data temp;
    set temp;
    if upcase(substr(strip(reverse(variable)), 1, 3))='CTD' then var=reverse(substr(strip(reverse(variable)), 4));
    if ^missing(var);
run;

proc sql noprint;
    select put(count(num), 1.) into :num from temp;
    select strip(var) into :var1-:var&num. from temp;
quit;

%macro final;
data list_final;
    set list;
    %do i=1 %to #
    %let j=&&var&i.;
    &j.dt=put(&j.dtc, z2.);
    %end;
run;

%mend;

%final;


藤椅
leedx 发表于 2012-3-13 22:48:25
学习了~~~

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

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