全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1588 3
2017-10-09
大家好,我在处理一组数据,其中,有一列数据是字符串(如1fbe01fe),共有100000个字符串,其中大多数重复,现在我怎么才能将字符串自主定义为不同数字或字母(如1fbe01fe-->1,fe8cc448-->2,...)
二维码

扫码加我 拉你入群

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

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

全部回复
2017-10-10 09:29:01
data test;
input string $;
cards;
1fbe01fe
asdfasdf
fe8cc448
asdfasdf
qwerqwer
asdfasdf
zxcvzxcv
qwerqwer
;
run;

proc sort data=test;
   by string;
run;

data test;
   set test;
   by string;
   if first.string then id+1;
run;
二维码

扫码加我 拉你入群

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

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

2017-10-10 20:54:02
l1i2n3i4n5g 发表于 2017-10-10 09:29
data test;
input string $;
cards;
可是我的数据是重复的,就按列排比如是:1fbe01fe、asdfasdf、1fbe01fe、asdfasdf、fe8cc448、fe8cc448、asdfasdf、qwerqwe、asdfasdf、qwerqwer...  (共十万个字符串)这种情况怎么处理呢?  请指教
二维码

扫码加我 拉你入群

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

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

2017-10-11 00:43:55
首先,假设这个数据集是sas7bdat文件,数据集名字为a,字符串column的变量名为string。


/*1.生成数据集b,包含所有不同string有且只有一个*/
proc sql;
  create table b as select distinct string from a;
quit;

/*2.对每个不同的string设定一个值,用变量num表示*/

data c;
  set b;
  if strip(string)="xxx" then num=1;
  if strip(string)="xxxx" then num=2;
/*...以此类推,根据需要填写*/
run;

/*将num 变量lookup到原数据集*/

data d;
  length num 8;
  set a;
  if _n_=1 then do;
  declare hash a(dataset:"c");
    a.definekey("string");
    a.definedata("num");
    a.definedone();
  end;
  rc=a.find();
run;
  

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群