SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1417|回复: 16
打印 上一主题 下一主题

求助,数据合并

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-12-15 09:31:01 | 只看该作者

求助,数据合并

现在有数据集X,有两个变量,1个字符,1个数值,如下
aaa    1
bbb     2
aaa,bbb,ccc    3
ddd     4
要把观测合并成
aaa,bbb,ccc 6
ddd 4
请大虾们帮忙看看怎么写
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-12-15 10:24:10 | 只看该作者

Re: 求助,数据合并

自己顶一个
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-12-15 15:00:32 | 只看该作者

Re: 求助,数据合并

处理逻辑是什么?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-12-15 15:46:29 | 只看该作者

Re: 求助,数据合并

我也看不懂,老大,问题也得写清楚,才有人回答啊
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-12-15 16:47:15 | 只看该作者

Re: 求助,数据合并

aaa,bbb,ccc包含aaa,将aaa的值加到aaa,bbb,ccc中,并且删除aaa观测。
aaa,bbb,ccc包含bbb,将bbb的值加到aaa,bbb,ccc中,并且删除bbb观测。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-12-15 22:04:00 | 只看该作者

Re: 求助,数据合并

Following code is just for your information.

data a;
input x : $20.  y;
cards;
aaa 1
bbb 2
aaa,bbb,ccc 3
ddd 4
ddd,eee 5
fff 6
;
run;

proc sql noprint;
select nobs into : nobs from sashelp.vtable where libname='WORK' and memname='A' and memtype='DATA';
quit;

data b;
array  temp(&nobs) $ 20 ;
do i=1 to total;
set a point=i;
temp(i)=x;
end;
set a nobs=total;
n=0;
do i=1 to total;
if temp(i)=x then n+1;
cnt=count(temp(i),',');
if cnt>0 and temp(i) ne x then do;
do j=1 to cnt+1;
if x=scan(temp(i),j,',') then delete;
end;
end;
end;
keep x y;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-12-16 10:27:03 | 只看该作者

Re: 求助,数据合并

to jimmy782
非常感谢这位高手,这段程序写得很好,
这段程序之做到了将aaa、bbb、ddd三条记录删除,
还没完全满足我的需求,
还要将aaa和bbb的y变量值累加到aaa,bbb,ccc中,ddd的y变量值累加到ddd,eee中
结果应该是
aaa,bbb,ccc 6
ddd,eee 9
fff 6
望高手再来指导下,谢谢各位了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-12-16 14:37:16 | 只看该作者

Re: 求助,数据合并

<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
帮顶!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
9#
发表于 2010-12-16 16:06:40 | 只看该作者

Re: 求助,数据合并

data a;
input x : $20. y;
cards;
aaa 1
bbb 2
aaa,bbb,ccc 3
aaa,bbb,ccc,fff 3
ddd 4
ddd,eee 5
fff 6
;
run;
      
proc sql;
create table exclu as select b.*
from a as a
inner join a as b
on index(trim(a.x),trim(b.x))and length(b.x)&lt;length(a.x) ;
create table vicky  as select distinct a.x,sum(b.y) as y_sum
from a as a
left join a as b
on index(trim(a.x),trim(b.x))&gt;0
group by a.x;
create table vicky  as select *
from vicky
where x not in (select x from exclu);
quit;           
proc print data=vicky;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2010-12-16 16:56:10 | 只看该作者

Re: 求助,数据合并

简单修改了下,以前没细看需求,不好意思。

data a;
input x : $20. y;
cards;
aaa 1
bbb 2
aaa,bbb,ccc 3
fff,aaa,bbb,ccc 3
ddd 4
ddd,eee 5
fff 6
;
run;

proc sql noprint;
select nobs into : nobs from sashelp.vtable where libname='WORK' and memname='A' and memtype='DATA';
quit;

data b;
array tx(&amp;nobs) $ 20 ;
do i=1 to total;
set a point=i;
tx(i)=x;
end;
array ty(&amp;nobs) $ 20 ;
do i=1 to total;
set a point=i;
ty(i)=y;
end;
set a nobs=total;
n=0;
do i=1 to total;
if tx(i)=x then n+1;
if tx(i) ne x then do;
if index(trim(tx(i)),trim(x))&gt;0 then n+1;
else if index(trim(x),trim(tx(i)))&gt;0 then y+ty(i);
end;
if n&gt;1 then delete;
end;
keep x y;
run;
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-13 20:02 , Processed in 0.070102 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表