DATA Step, Macro, Functions and more

delete multiple observations

Accepted Solution Solved
Reply
Contributor
Posts: 39
Accepted Solution

delete multiple observations

dataset 

id include exclude

a . abc

a . xyz

b j abf

b . gtj

 

output required 

 

a . abc,xyz

b j abf,gtj

 


Accepted Solutions
Solution
‎06-26-2017 06:52 AM
Super User
Super User
Posts: 7,988

Re: delete multiple observations

Posted in reply to shivamarrora0

Its a good idea to foloow the guidance given by the Post button.  Clarify the test data and the output by describing the relation between them.  At a guess, I would say include is a list of inclusions separated by ", " and exclude is a the same.  So you want one id and two lists yes?  If so then (note how I put the test data in a datastep):

data have; 
  infile datalines dlm="," dsd;
  input id $ include $ exclude $;
datalines;
a,,abc
a,,xyz
b,j,abf
b,,gtj
;
run;

data want (drop=include exclude);
  set have;
  length inc exc $200;
  retain inc exc;
  by id;
  if first.id then call missing(inc,exc);
  inc=ifc(include ne "",catx(',',inc,include),inc);
  exc=ifc(exclude ne "",catx(',',exc,exclude),exc);
  if last.id then output;
run;

View solution in original post


All Replies
Solution
‎06-26-2017 06:52 AM
Super User
Super User
Posts: 7,988

Re: delete multiple observations

Posted in reply to shivamarrora0

Its a good idea to foloow the guidance given by the Post button.  Clarify the test data and the output by describing the relation between them.  At a guess, I would say include is a list of inclusions separated by ", " and exclude is a the same.  So you want one id and two lists yes?  If so then (note how I put the test data in a datastep):

data have; 
  infile datalines dlm="," dsd;
  input id $ include $ exclude $;
datalines;
a,,abc
a,,xyz
b,j,abf
b,,gtj
;
run;

data want (drop=include exclude);
  set have;
  length inc exc $200;
  retain inc exc;
  by id;
  if first.id then call missing(inc,exc);
  inc=ifc(include ne "",catx(',',inc,include),inc);
  exc=ifc(exclude ne "",catx(',',exc,exclude),exc);
  if last.id then output;
run;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 200 views
  • 0 likes
  • 2 in conversation