楼主: rockfido
7577 8

[原创博文] 如何将SAS DATA中的变量名改名(不知道原变量名的前提下) [推广有奖]

  • 0关注
  • 0粉丝

博士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
2724 个
通用积分
0.1841
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
2441 点
帖子
201
精华
0
在线时间
200 小时
注册时间
2008-8-29
最后登录
2024-4-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果我有一个DATA SET A,不知道里面有多少变量,也不知道变量的名字。

请问有没有办法讲变量的名称改为:COL1,COL2,COL3,...COLN?
二维码

扫码加我 拉你入群

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

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

关键词:Data 不知道 请问有没有 Set 有没有 如何

回帖推荐

bobguy 发表于5楼  查看完整内容

Use sas utility procedure is the right way. data t1; a1=0;a2=0;ccd3=0; run; data _null_; if 0 then set t1; array _allvar_(*) _all_; call execute('proc datasets; modify t1;rename ') ; do i=1 to dim(_allvar_); rename=catt(vname(_allvar_(i)),'=col',i); call execute(rename) ; end; call execute(';run;quit;') ; stop; run;

本帖被以下文库推荐

沙发
xfyx 发表于 2010-4-27 03:59:04 |只看作者 |坛友微信交流群
很久没用SAS了,下面这个修改了一下我以前的笔记。虽然不一定十分正确,应该可以给你一个方向了。
* make the variable names into Macro variables;
proc sql noprint;
   select distinct name
      into :varname1-:varname999
         from your-data;
   quit;

data temp;
    set your-data;
%do i = 1 %to &sqlobs; *the &sqlobs tells you how many variables were read in previous SQL;
    rename &&varname&i=col&i;
%end;
已有 1 人评分热心指数 收起 理由
crackman + 1 SQLOBS

总评分: 热心指数 + 1   查看全部评分

使用道具

藤椅
rockfido 在职认证  发表于 2010-4-27 04:25:00 |只看作者 |坛友微信交流群
2# xfyx

thank you so much :)

使用道具

板凳
rockfido 在职认证  发表于 2010-4-27 06:12:33 |只看作者 |坛友微信交流群
2# xfyx

这个%do loop在DATA STEP可以用么。。。。

使用道具

报纸
bobguy 发表于 2010-4-27 08:11:05 |只看作者 |坛友微信交流群
rockfido 发表于 2010-4-27 03:04
如果我有一个DATA SET A,不知道里面有多少变量,也不知道变量的名字。

请问有没有办法讲变量的名称改为:COL1,COL2,COL3,...COLN?
Use sas utility procedure is the right way.

data t1;
a1=0;a2=0;ccd3=0;
run;

data _null_;
  if 0 then set t1;
  array _allvar_(*) _all_;
  call execute('proc datasets; modify t1;rename ') ;
  do i=1 to dim(_allvar_);
    rename=catt(vname(_allvar_(i)),'=col',i);
    call execute(rename) ;
  end;
  call execute(';run;quit;') ;
  stop;
  run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

使用道具

地板
crackman 发表于 2010-4-27 09:35:47 |只看作者 |坛友微信交流群
5# bobguy
这个效率高点
最好不要用SQL
特别是大量数据的时候
效率差的很大

使用道具

7
sushe1527 发表于 2010-4-27 10:03:51 |只看作者 |坛友微信交流群
data x;
input a b$;
cards;
9 .
3 4
;run;
%let c=%sysfunc(open(x,i));%let n=%sysfunc(attrn(&c,nvars));
proc transpose data=x out=y;var _all_;run;
data y1;set y;i=compress("col"||_n_);run;
proc transpose data=y1 out=final(drop=_name_);id i;var col1-col&n;run;

使用道具

8
rockfido 在职认证  发表于 2010-4-28 01:28:31 |只看作者 |坛友微信交流群
哇,学习到好多!!谢谢大家!!

使用道具

9
pinggutu 发表于 2010-4-28 02:04:58 |只看作者 |坛友微信交流群
crackman 发表于 2010-4-27 09:35
5# bobguy
这个效率高点
最好不要用SQL
特别是大量数据的时候
效率差的很大
学到了!谢谢版主!

使用道具

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

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

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

GMT+8, 2024-4-27 20:05