BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
KOUAME
Obsidian | Level 7

Hi everyone, hope you're ok!

I have a question for a work I am just doing:

I want to create 2 data set (appel and appel_rejet)

appel is my normal dataset if none of (Id_Client Date_appel  Id_Direction Id_Distance ) is missing and appel_rejet is a data of reject value if the line contains null value for :

Id_Client Date_appel  Id_Direction Id_Distance  and want to add a column in appel_rejet to show the raison of reject value.

data attached ...

Can anyone help me ?

 

1 ACCEPTED SOLUTION

Accepted Solutions
andreas_lds
Jade | Level 19

Not fully tested, remove datalines and change the infile-statement according to your environment:

data appel(drop=reason) appel_rejet;
   attrib 
      Id_Client length=$ 10
      Date_appel length=8 format=yymmddd10. informat=yymmdd10.      
      Heure_appel length=8 format=time5. informat=time.
      No_appelant length=$ 20
      No_appele length=$ 20
      Id_Direction length= 8
      Id_Produit length= 8
      Id_Distance length= 8
      Duree length= 8
      Reason length= $ 130
      _var length= $ 32
      _value length= $20
   ;
   
   drop _var _value;

   infile datalines missover delimiter='|';
   input Id_Client Date_appel Heure_appel No_appelant No_appele Id_Direction Id_Produit Id_Distance Duree;
   
   /* Id_Client Date_appel  Id_Direction Id_Distance */
   if not missing(Id_Client) and nmiss(Date_appel, Id_Direction, Id_Distance) = 0 then do;
      output appel;
   end;
   else do;
      do _Var = 'Id_Client', 'Date_appel', 'Id_Direction', 'Id_Distance';
         _value = compress(vvaluex(_Var), '.');
         if missing(_value) then do;
            Reason = catx(', ', Reason, _Var);
         end;
      end;
      
      output appel_rejet;
   end;
   
datalines;
224688|2003-01-03|15:39|0548967125|0666778899|1|1|3|78
224688|2003-01-08|15:52|0612312345|0666778899|1|2|1|1
224688|2003-01-09|23:00|0666778899|0548967125|2|1|4|150
224688|2003-01-11|16:28|0666778899|0614759648|2|2|2|1
224688|2003-01-15|02:30|0666778899|0548967125|2|3|3|1
224688|2003-01-18|04:01|0666778899|0612312345|2|1|1|135
355557|2003-01-24|16:02|0615151515|0655446655|1|1|1|256
355557|2003-01-26|10:50|0664972835|0655446655|1|1|2|948
355557|2003-01-18|01:03|0664972844|0655446655|1|2|2|1
355557|2003-01-30| |0655446655|+4946497|2|1|5|145
958462|2003-01-24|05:23|0699887766|0247965814|2|3|4|1
958462|2003-01-27|23:18|0612312345|0699887766|1|1|1|248
121212|2003-01-01|11:04|06046728913|0612312345|1|1|2|648
121212|2003-01-14|15:39|0646728914|0612312345|1|2|2|1
121212|2003-01-23|15:43|0612312345|0627273838|2|1|1|254
121212|2003-01-28|23:23|0612312345|+415548967|2|3|5|1
773377|2003-01-02|18:02|0627273838|0611223344|1|1|1|694
876543|2003-01-13|04:13|0635483548|0622446688|1|1|2|425
876543|2003-01-16|07:57|0627273838|0622446688|1|1|1|348
876543|2003-01-16|21:29|0622446688|0635483548|2|1|2|648
876543|2003-01-22|16:26|0622446688|+33145784875|2|3|5|1
876543|2003-01-05|10:42|0622446688|0627273838|2|1|1|248
876543|2003-01-31|18:31|0622446688|0635483548|2|1|2|1045
876543|2003-01-24|04:27|0622446688|0627273838|3|2| |1
876543|2003-01-16|23:30|0627273838|0622446688|1| |1|1
876543|2003-01-18|11:53|0635483548|0622446688|1|1|2|318
654321|2003-01-07|16:04|+49487569|0611223344|1|1|5|648
654321|2003-01-04|17:40|0699887766|0611223344|1|2|1|1
654321|2003-01-19|01:48|0699887766|0611223344|1|1|1|964
654321|2003-01-21|20:26|1645889545|0611223344|1|1|1|478
654321|2003-01-06|08:11|0611223344|0654789658|2|1|2|1845
654321|2003-01-13|10:42|0611223344|0664849452|2|2|2|1
654321|2003-01-16|01:43|0611223344|0345784875|2|3|4|1
654321|2003-01-24|18:43|0611223344|0699887766|2|1|1|314
654321|2003-01-26|01:12|0611223344|0645889545|2|1|1|695
654321|2003-01-17|11:06|0611223344|0654789658|2|1|2|148
654321|2003-01-22|06:19|0611223344|0345784875|2|3|4|1
654321|2003-01-15|23:43|0622446688|0611223344|1|1|1|318
654321|2003-01-20|12:43|0622446688|0611223344|1|1|1|648
444333|2003-01-18|18:13|0684758475|0615151515|1| |2|145
444333|2003-01-29|18:45|0684758476|0615151515|1|2|2|1
444333|2003-01-12|04:39|0684758477|0615151515|1|1|2|364
444333|2003-01-15|22:55|+457894875|0615151515|1|1|5|1520
444333|2003-01-18|11:06|0214578946|0615151515|1|1|3|648
444333|2003-01-24|11:52|0664648585|0615151515|1|2|2|1
444333| | |0615151515|0214578946| | |3|315
666999| |18:27|0664648585|0669696969|1|1|2|348
234555|2003-01-22|18:03|0612345678|0214579468|2|3|4|1
234555|2003-01-18|04:57|0612345678|0622446688|2|1|1|648
234555|2003-01-26|08:59|0612345678|1622446688|2|1|1|695
234555|2003-01-04|22:32|0612345678|0697154863|2|1| |842
234555| |08:36|0612345678|0645798524|2|1| |3641
;
run;

View solution in original post

5 REPLIES 5
CurtisMackWSIPP
Lapis Lazuli | Level 10

You can do this with multiple datasets on the data line and conditional output statements. Something like this?

 

data goodshoes badshoes;
  set sashelp.shoes;
  badstoreflag = 0;
  if sales < 5000 then badstoreflag = 1;
  else if sales < 10000 then badstoreflag = 2;
  if badstoreflag = 0 then output goodshoes;
  else output badshoes;
run;
andreas_lds
Jade | Level 19

Not fully tested, remove datalines and change the infile-statement according to your environment:

data appel(drop=reason) appel_rejet;
   attrib 
      Id_Client length=$ 10
      Date_appel length=8 format=yymmddd10. informat=yymmdd10.      
      Heure_appel length=8 format=time5. informat=time.
      No_appelant length=$ 20
      No_appele length=$ 20
      Id_Direction length= 8
      Id_Produit length= 8
      Id_Distance length= 8
      Duree length= 8
      Reason length= $ 130
      _var length= $ 32
      _value length= $20
   ;
   
   drop _var _value;

   infile datalines missover delimiter='|';
   input Id_Client Date_appel Heure_appel No_appelant No_appele Id_Direction Id_Produit Id_Distance Duree;
   
   /* Id_Client Date_appel  Id_Direction Id_Distance */
   if not missing(Id_Client) and nmiss(Date_appel, Id_Direction, Id_Distance) = 0 then do;
      output appel;
   end;
   else do;
      do _Var = 'Id_Client', 'Date_appel', 'Id_Direction', 'Id_Distance';
         _value = compress(vvaluex(_Var), '.');
         if missing(_value) then do;
            Reason = catx(', ', Reason, _Var);
         end;
      end;
      
      output appel_rejet;
   end;
   
datalines;
224688|2003-01-03|15:39|0548967125|0666778899|1|1|3|78
224688|2003-01-08|15:52|0612312345|0666778899|1|2|1|1
224688|2003-01-09|23:00|0666778899|0548967125|2|1|4|150
224688|2003-01-11|16:28|0666778899|0614759648|2|2|2|1
224688|2003-01-15|02:30|0666778899|0548967125|2|3|3|1
224688|2003-01-18|04:01|0666778899|0612312345|2|1|1|135
355557|2003-01-24|16:02|0615151515|0655446655|1|1|1|256
355557|2003-01-26|10:50|0664972835|0655446655|1|1|2|948
355557|2003-01-18|01:03|0664972844|0655446655|1|2|2|1
355557|2003-01-30| |0655446655|+4946497|2|1|5|145
958462|2003-01-24|05:23|0699887766|0247965814|2|3|4|1
958462|2003-01-27|23:18|0612312345|0699887766|1|1|1|248
121212|2003-01-01|11:04|06046728913|0612312345|1|1|2|648
121212|2003-01-14|15:39|0646728914|0612312345|1|2|2|1
121212|2003-01-23|15:43|0612312345|0627273838|2|1|1|254
121212|2003-01-28|23:23|0612312345|+415548967|2|3|5|1
773377|2003-01-02|18:02|0627273838|0611223344|1|1|1|694
876543|2003-01-13|04:13|0635483548|0622446688|1|1|2|425
876543|2003-01-16|07:57|0627273838|0622446688|1|1|1|348
876543|2003-01-16|21:29|0622446688|0635483548|2|1|2|648
876543|2003-01-22|16:26|0622446688|+33145784875|2|3|5|1
876543|2003-01-05|10:42|0622446688|0627273838|2|1|1|248
876543|2003-01-31|18:31|0622446688|0635483548|2|1|2|1045
876543|2003-01-24|04:27|0622446688|0627273838|3|2| |1
876543|2003-01-16|23:30|0627273838|0622446688|1| |1|1
876543|2003-01-18|11:53|0635483548|0622446688|1|1|2|318
654321|2003-01-07|16:04|+49487569|0611223344|1|1|5|648
654321|2003-01-04|17:40|0699887766|0611223344|1|2|1|1
654321|2003-01-19|01:48|0699887766|0611223344|1|1|1|964
654321|2003-01-21|20:26|1645889545|0611223344|1|1|1|478
654321|2003-01-06|08:11|0611223344|0654789658|2|1|2|1845
654321|2003-01-13|10:42|0611223344|0664849452|2|2|2|1
654321|2003-01-16|01:43|0611223344|0345784875|2|3|4|1
654321|2003-01-24|18:43|0611223344|0699887766|2|1|1|314
654321|2003-01-26|01:12|0611223344|0645889545|2|1|1|695
654321|2003-01-17|11:06|0611223344|0654789658|2|1|2|148
654321|2003-01-22|06:19|0611223344|0345784875|2|3|4|1
654321|2003-01-15|23:43|0622446688|0611223344|1|1|1|318
654321|2003-01-20|12:43|0622446688|0611223344|1|1|1|648
444333|2003-01-18|18:13|0684758475|0615151515|1| |2|145
444333|2003-01-29|18:45|0684758476|0615151515|1|2|2|1
444333|2003-01-12|04:39|0684758477|0615151515|1|1|2|364
444333|2003-01-15|22:55|+457894875|0615151515|1|1|5|1520
444333|2003-01-18|11:06|0214578946|0615151515|1|1|3|648
444333|2003-01-24|11:52|0664648585|0615151515|1|2|2|1
444333| | |0615151515|0214578946| | |3|315
666999| |18:27|0664648585|0669696969|1|1|2|348
234555|2003-01-22|18:03|0612345678|0214579468|2|3|4|1
234555|2003-01-18|04:57|0612345678|0622446688|2|1|1|648
234555|2003-01-26|08:59|0612345678|1622446688|2|1|1|695
234555|2003-01-04|22:32|0612345678|0697154863|2|1| |842
234555| |08:36|0612345678|0645798524|2|1| |3641
;
run;
KOUAME
Obsidian | Level 7

@andreas_lds , thanks so much , it works perfectly 😍🕺

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
  • 5 replies
  • 1546 views
  • 3 likes
  • 3 in conversation