全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1051 4
2017-03-20
悬赏 200 个论坛币 未解决


下面是原始数据,删除规则如下,如果在两个时期,出现了大于等于两家相同的institution,则将对应的name的观测都删除掉,即,把下面的张三,李四删除掉

nameyearqtrinstitutionsex
张三

2013

1

微软
张三

2013

1

脸书
张三

2014

3

微软
张三

2014

3

脸书
张三

2015

4

微软
李四

2015

2

联合利华
李四

2015

3

联合利华
李四

2015

3

保洁
李四

2015

3

谷歌
李四

2015

4

联合利华
李四

2015

4

谷歌
王五

2013

4

谷歌
王五

2014

3

华为
王五

2014

3

谷歌
王五

2014

4

华为



二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-21 00:10:09
data test;
input name :$10.        year        qtr        institution :$20.        sex :$10.;
cards;
张三        2013        1        微软        男
张三        2013        1        脸书        男
张三        2014        3        微软        男
张三        2014        3        脸书        男
张三        2015        4        微软        男
李四        2015        2        联合利华        女
李四        2015        3        联合利华        女
李四        2015        3        保洁        女
李四        2015        3        谷歌        女
李四        2015        4        联合利华        女
李四        2015        4        谷歌        女
王五        2013        4        谷歌        男
王五        2014        3        华为        男
王五        2014        3        谷歌        男
王五        2014        4        华为        男
;
run;

proc sort data=test nodupkey;
by name year qtr institution;
run;

proc sort data=test out=test1 nounikey;
by name year qtr;
run;

proc sort data=test1 out=test2 nodupkey;
by name year qtr;
run;

proc sql data=test2;
create table test3 as
select name, count(name) as count
from test2
group by name;
quit;

data test4;
merge test test3;
by name;
if count<=1;
drop count;
run;
二维码

扫码加我 拉你入群

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

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

2017-3-21 09:27:17
李四只有一个时期 (year=2015)

proc sql;
   create table aa as
   select distinct name, year, count(distinct institution) as n_inst
   from have
   group name, year;

   create table bb as
   select name, count(year) as n_year
   from aa
   where n_inst >=2
   group by name;

   create table cc as
   select name
   from bb
   where n_year <2;

   create table want as
   select name, year, qtr, institution, sex
   from have dd
   where dd.name in (select name from cc);

quit;
二维码

扫码加我 拉你入群

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

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

2017-3-21 10:42:14
l1i2n3i4n5g 发表于 2017-3-21 00:10
data test;
input name :$10.        year        qtr        institution :$20.        sex :$10.;
cards;
这段程序的想法是什么呢,没看懂
二维码

扫码加我 拉你入群

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

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

2017-3-21 12:23:47
akalius 发表于 2017-3-21 10:42
这段程序的想法是什么呢,没看懂
step1.同一时期,“出现了大于等于两家相同的institution”的记录找出来,形成test1;
step2.在test1基础上,只列具体时期,形成test2;
step3.数一数每个name有几个这样的时期,形成test3;
step4.根据需要的时期个数保留记录,形成test4。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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