全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2225 7
2013-03-28
未命名.jpg
有这么一组数据,取第一条数据的name, 新建变量new,想要的结果如下:

new(标签)
Alfred是第一个条数据
Alice
Barbara
Carol
Henry
...
William是最后一条数据

也就是说第一条和最后一条数据提出来加工,中间的原封不动,请问要怎么做?
我试过下面的代码,怎么都不行。

data b;
set a;
by name;
if first.name then new=compress(name||"是第一条数据");
if last.n then new=compress(name||"是最后一条数据");
else new=name;
run;




二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-28 15:49:53
由于name的值是没有重复的,所以对于每条记录而言first.name都为1
data b;
set a  end=last;
by name;
if _n_=1 then new=compress(name||"是第一条数据");
else if last  then new=compress(name||"是最后一条数据");
else new=name;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-28 16:21:07
请问怎么把第一条数据到最后一条数据组合成字符串输出到结果上?
二维码

扫码加我 拉你入群

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

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

2013-3-28 16:29:10
burnpark 发表于 2013-3-28 16:21
请问怎么把第一条数据到最后一条数据组合成字符串输出到结果上?
data b;
set SASHELP.CLASS  end=last;
if _n_=1 then do;new=compress(name||"AAAAAAAA"); output;end;
else if last  then do;new=compress(name||"BBBBBBBBB"); ; output;end;
else new=name;
run;
这个是你想要的吗
二维码

扫码加我 拉你入群

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

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

2013-3-28 16:42:42
我想要的结果是”Alfred Alice Barbara Carol Henry James Jane Janet Jeffrey John Joyce Judy Louise Mary
Philip Robert Ronald Thomas William“
二维码

扫码加我 拉你入群

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

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

2013-3-28 17:03:02
proc sql noprint;
select name into :names separated by ’ ’
from a;
quit;
这样名字就按顺序以空格隔开放在宏变量names里面了

如果你想在一个data step里面完成的话
length names $ 1000;
  retain names;
names=catx(' ',names,name);
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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