BookmarkSubscribeRSS Feed
jonatan_velarde
Lapis Lazuli | Level 10

Good night my friends:

 

After many days obtaining results, thank to all of you, i continue some research looking for answers and complete some information to use.

 

i have this dataset:

 

Animal DAM ANIMAL_BIRTH_DATE
6191 5495 7/26/2007
6191.1 5495 7/26/2007
6393 5501 8/15/2007
6394 5501 8/15/2007
6563 5501 8/5/2008
6564 5501 8/5/2008
6844 5501 10/10/2009
6845 5501 10/10/2009
7361.1 5501 1/4/2012
7362 5501 1/4/2012
6463.1 5757 7/24/2008
6843.1 5757 10/10/2009
6843 5757 10/10/2009

 

You can see in the column 1 (Animal), column 2 (DAM) and column 3 (Date of birth of the animal), here is the question:

i need to obtain one more colum, this new colum will be called as Perturition_Number, and i will explain how it will be creatd this,

In this example i'll use the head  of our data set:

 

Animal DAM ANIMAL_BIRTH_DATE
6191 5495 7/26/2007
6191.1 5495 7/26/2007

 

Here the animal, 6191 was born as 7/26/2007, from the DAM 5495, is means the year 2007 the DAM had 2 offprings, and just this year, the objective is obtain this table:

 

Parturition_Order Animal DAM ANIMAL_BIRTH_DATE
1 6191 5495 7/26/2007
1 6191.1 5495 7/26/2007

 

based in this little example; the full data set to obtain would be like this:

 

Parturition_Order Animal DAM ANIMAL_BIRTH_DATE
1 6191 5495 7/26/2007
1 6191.1 5495 7/26/2007
1 6393 5501 8/15/2007
1 6394 5501 8/15/2007
2 6563 5501 8/5/2008
2 6564 5501 8/5/2008
3 6844 5501 10/10/2009
3 6845 5501 10/10/2009
4 7361.1 5501 1/4/2012
4 7362 5501 1/4/2012
1 6463.1 5757 7/24/2008
2 6843.1 5757 10/10/2009
2 6843 5757 10/10/2009

 

 

Hopeing to obtain your advices and help, i send big hugs from Brazil

 

Thank You

 

 

3 REPLIES 3
stat_sas
Ammonite | Level 13

data have;
input Animal DAM ANIMAL_BIRTH_DATE :anydtdte.;
format ANIMAL_BIRTH_DATE mmddyy10.;
datalines;
6191 5495 7/26/2007
6191.1 5495 7/26/2007
6393 5501 8/15/2007
6394 5501 8/15/2007
6563 5501 8/5/2008
6564 5501 8/5/2008
6844 5501 10/10/2009
6845 5501 10/10/2009
7361.1 5501 1/4/2012
7362 5501 1/4/2012
6463.1 5757 7/24/2008
6843.1 5757 10/10/2009
6843 5757 10/10/2009
;

 

data want;
set have;
by dam ANIMAL_BIRTH_DATE notsorted;
if first.dam and first.ANIMAL_BIRTH_DATE then Parturition_Order=0;
if ANIMAL_BIRTH_DATE ne lag(ANIMAL_BIRTH_DATE) then Parturition_Order+1;
run;

mohamed_zaki
Barite | Level 11
data want ;set have;
retain Parturition_Order;
by DAM ANIMAL_BIRTH_DATE notsorted;
	If first.DAM then Parturition_Order=1;
  	Else if first.ANIMAL_BIRTH_DATE then Parturition_Order = Parturition_Order +1;
run;
Steelers_In_DC
Barite | Level 11

data have;
infile cards dsd;
informat ANIMAL_BIRTH_DATE mmddyy10.;
format ANIMAL_BIRTH_DATE mmddyy10.;
input Animal     DAM     ANIMAL_BIRTH_DATE;
cards;
6191,5495,7/26/2007
6191.1,5495,7/26/2007
6393,5501,8/15/2007
6394,5501,8/15/2007
6563,5501,8/5/2008
6564,5501,8/5/2008
6844,5501,10/10/2009
6845,5501,10/10/2009
7361.1,5501,1/4/2012
7362,5501,1/4/2012
6463.1,5757,7/24/2008
6843.1,5757,10/10/2009
6843,5757,10/10/2009
;
run;

proc sort data=have;by dam animal_birth_date animal;

data want;
set have;
by dam animal_birth_date animal;
if first.animal_birth_date then count +1;
if first.dam then count = 1;
run;

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1347 views
  • 1 like
  • 4 in conversation