DATA Step, Macro, Functions and more

Duplicate line

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 13
Accepted Solution

Duplicate line

Hi,

Hope that someone will help. 

I've a dataset 

Table entry
N_CRE RISK
5031500EUR ART127-b
5031500EUR ART127-c
00002063356EUR ART127-b
00002063356EUR ART127-d
and below the desire output
N_CRE RISK
5031500EUR ART127-b;ART127-c
00002063356EUR ART127-b;ART127-d
Please could you tell me how to do with SAS? Thanks

Accepted Solutions
Solution
‎12-04-2017 10:38 AM
PROC Star
Posts: 1,400

Re: Duplicate line

data have;
length N_CRE RISK $20;
input N_CRE$ RISK$;
datalines;
5031500EUR ART127-b
5031500EUR ART127-c
00002063356EUR ART127-b
00002063356EUR ART127-d
;

proc sort data=have;
	by N_CRE;
run;

data want(keep=n_cre temp rename=(temp=RISK));
	set have;
	length temp $200;
	by N_CRE;
	if first.N_CRE then temp=RISK;
	else temp = cats(temp,';', RISK);

	if last.N_CRE;
	retain temp;
run;

View solution in original post


All Replies
Super User
Super User
Posts: 9,840

Re: Duplicate line

Post test data as a datastep using the code window (its the {i} above post), as such I am not typing it out so just a guess:

data want (drop=_risk);
  set have (rename=(risk=_risk));
  length risk $2000;
  retain risk;
  by n_cre;
  if first.n_cre then risk=_risk;
  else risk=catx(',',risk,_risk);
  if last.n_cre then output;
run;
Solution
‎12-04-2017 10:38 AM
PROC Star
Posts: 1,400

Re: Duplicate line

data have;
length N_CRE RISK $20;
input N_CRE$ RISK$;
datalines;
5031500EUR ART127-b
5031500EUR ART127-c
00002063356EUR ART127-b
00002063356EUR ART127-d
;

proc sort data=have;
	by N_CRE;
run;

data want(keep=n_cre temp rename=(temp=RISK));
	set have;
	length temp $200;
	by N_CRE;
	if first.N_CRE then temp=RISK;
	else temp = cats(temp,';', RISK);

	if last.N_CRE;
	retain temp;
run;
Occasional Contributor
Posts: 13

Re: Duplicate line

Thanks a lot.

What i've done is a:

proc sort data=have;
	by N_Cre;
run;
proc transpose data=have out=classe_risk1 (drop = _NAME_);
	by  N_Cre;
	var RISK;
run;
data classe_risk2;
	set classe_risk1;
	COL_FI = catx(';', of COL1-COL3);
run;
☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 181 views
  • 0 likes
  • 3 in conversation