楼主: rockfido
8143 8

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

  • 0关注
  • 0粉丝

已卖:1754份资源

博士生

32%

还不是VIP/贵宾

-

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

楼主
rockfido 在职认证  发表于 2010-4-27 03:04:28 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-27 00:54