楼主: Valen860108
3092 8

[原创博文] 请问如何一次性改变变量的名称? [推广有奖]

  • 0关注
  • 0粉丝

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
838 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
323 点
帖子
27
精华
0
在线时间
36 小时
注册时间
2009-5-5
最后登录
2020-5-21

楼主
Valen860108 发表于 2010-8-30 00:02:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问如何将一个数据里的所有变量(上百个): a, b, c, d, e, ...
一次全变成有规律的:例如:a1,a2,  a3,  a4,  a5,  ...

感谢您的赐教!
二维码

扫码加我 拉你入群

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

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

关键词:一次性 如何

回帖推荐

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

data crackman; input a b c d e f@@; datalines; 1 2 3 4 5 6 4 6 7 8 9 9 9 8 7 6 5 4 ; run; proc contents data=crackman out=a(keep=name) noprint; run; data _null_; set a; call symput('a'||left(_n_),trim(name)); run; proc sql noprint; select count(name) as n into:n from a ; quit; %macro rename; data crackman; set crackman; rename %do i=1 %to &n.; &&a&i.=a&i. %end; ; run; %m ...

本帖被以下文库推荐

沙发
crackman 发表于 2010-8-30 00:58:22
data crackman;
input a b c d e f@@;
datalines;
1 2 3 4 5 6
4 6 7 8 9 9
9 8 7 6 5 4
;
run;
proc contents data=crackman out=a(keep=name) noprint;
run;
data _null_;
set a;
call symput('a'||left(_n_),trim(name));
run;
proc sql noprint;
select count(name) as n into:n from a ;
quit;
%macro rename;
data crackman;
set crackman;
rename
%do i=1 %to &n.;
&&a&i.=a&i.
%end; ;
run;
%mend rename;
%rename;
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
Valen860108 + 1 + 1 + 1 对论坛有贡献
peijiamei + 4 + 2 精彩帖子
soporaeternus + 1 + 1 好的方法!

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

藤椅
pobel 在职认证  发表于 2010-8-30 08:05:16
data crackman;
input a b c d e f@@;
datalines;
1 2 3 4 5 6
4 6 7 8 9 9
9 8 7 6 5 4
;
run;
proc contents data=crackman out=a(keep=name) noprint varnum;
run;
data _null_;
set a end=last;
if _n_=1 then  call execute("Proc datasets nolist; modify crackman; rename ");
call execute(" "||strip(name)||"=a"||strip(_n_));
if last then call execute("; run; quit;");
run;
已有 2 人评分学术水平 热心指数 收起 理由
peijiamei + 4 + 2 精彩帖子
soporaeternus + 1 + 1 学习了

总评分: 学术水平 + 5  热心指数 + 3   查看全部评分

和谐拯救危机

板凳
Valen860108 发表于 2010-8-30 12:37:00
3# pobel
谢谢这位高人的热心帮助!

报纸
Valen860108 发表于 2010-8-30 12:38:28
2# crackman
多谢多谢!!学到了很多!

地板
xiaoxiahu0571 发表于 2010-8-30 13:48:30
data a1;
input  a b c d @;
cards;
1        1  1  1
;
run;
proc contents data=a1 out=a2(keep=name type);
run;
data a3;
set a2;
new_name="name"||left(_n_);
run;
proc sql;
select trim(name)||"="||new_name  into: change_name SEPARATED BY " "
from a3;
quit;
%put &change_name.;
data final;
set a1;
rename &change_name.;
run;
有点小复杂 我写的
已有 1 人评分学术水平 收起 理由
Valen860108 + 1 好的意见建议

总评分: 学术水平 + 1   查看全部评分

7
Valen860108 发表于 2010-8-30 15:11:07
6# xiaoxiahu0571
谢谢!!大家都好厉害啊~

8
rdzr 发表于 2010-8-30 16:40:44
Valen860108 发表于 2010-8-30 00:02
请问如何将一个数据里的所有变量(上百个): a, b, c, d, e, ...
一次全变成有规律的:例如:a1,a2,  a3,  a4,  a5,  ...

感谢您的赐教!
LZ,下面有一个偶认为更为简洁的程序,供参考:

data a;
input a b c d e f;
datalines;
1 2 3 4 5 6
;
proc transpose data=a out=b prefix=x;
proc transpose data=b out=b prefix=x;
data c(drop=_name_);
  set b;
proc print;
run;


下面是程序运行的结果:

                                         The SAS System      

                             Obs    x1    x2    x3    x4    x5    x6
                              1      1     2     3     4     5     6
已有 4 人评分学术水平 热心指数 信用等级 收起 理由
Valen860108 + 1 + 1 + 1 谢谢!
BraveMadMan + 1 + 1 很好
crackman + 1 数据量大的时候估计开销有点大
pobel + 1 + 1 好想法!!

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

9
rdzr 发表于 2010-8-30 17:27:11
3# pobel

谢谢,还请多多指教!

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

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