Sei sulla pagina 1di 4

Use SAS function Propcase() to streamline Google Contacts

You might think I am crazy...but I have been using this macro for a long time to fix some contacts in my Google
Contacts...I get a little irritated when I can't find a particular person by email...so I wrote this macro...
This macro takes for Input a .csv file that is exported from Google Contacts and outputs a file that is ready to be imported
to Google Contacts....often I wanted to have Names in the proper case...

Try it yourself and let me know if it needs any tweaks...

Propcase in SAS Documentation.

%macro organizeGoogleContacts(infile,outfile);
/*Import your contacts into SAS */
data googlegroups;
infile "&infile" dlm=',' dsd lrecl=32767 firstobs=2;
length Name      GivenName       AdditionalName Family_Name    Yomi_Name      Given_Name_Yomi           
Additional_Name_Yomi Family_Name_Yomi       Name_Prefix     Name_Suffix     Initials   Nickname         
Short_Name            Maiden_Name   Birthday            Gender Location           Billing_Information        
Directory_Server           Mileage            Occupation       Hobby  Sensitivity         Priority  Subject Notes  
Group_Membership       E_mail_1___Type            E_mail_1___Value         Phone_1___Type          
Phone_1___Value          Phone_2___Type           Phone_2___Value            Phone_3___Type          
Phone_3___Value          Organization_1___Type  Organization_1___Name            Organization_1___Yomi_Name  
Organization_1___Title   Organization_1___Department    Organization_1___Symbol           
Organization_1___Location        Organization_1___Job_Description $ 40;
input Name       GivenName       AdditionalName Family_Name    Yomi_Name      Given_Name_Yomi           
Additional_Name_Yomi Family_Name_Yomi       Name_Prefix     Name_Suffix     Initials   Nickname         
Short_Name            Maiden_Name   Birthday            Gender Location           Billing_Information        
Directory_Server           Mileage            Occupation       Hobby  Sensitivity         Priority  Subject Notes  
Group_Membership       E_mail_1___Type            E_mail_1___Value         Phone_1___Type          
Phone_1___Value          Phone_2___Type           Phone_2___Value            Phone_3___Type          
Phone_3___Value          Organization_1___Type  Organization_1___Name            Organization_1___Yomi_Name  
Organization_1___Title   Organization_1___Department    Organization_1___Symbol           
Organization_1___Location        Organization_1___Job_Description;
run;
 
/* For unnamed contacts use the Email username as the Name */
data names;
set googlegroups;
if name='' and E_mail_1___Value ne '' then name=propcase(lowcase(scan(E_mail_1___Value,1,'@')));/*Format the
names with camelcase*/
else name=propcase(upcase(name));/*Format the names with camelcase*/
run;
 
/* Remove any duplicates by name/email/phone contacts */
proc sort data=names out=googlecontacts nodupkey;
by name E_mail_1___Value Phone_1___Value;
where E_mail_1___Value ne '' or Phone_1___Value ne '';
run;
 
/* Many a times one contact may have been noted down with email contacts only */
proc sort data=googlecontacts out=email nodupkey;
by name;
where E_mail_1___Value ne '';
run;
 
/* Many a times one contact may have been noted down with Phone number only */
proc sort data=googlecontacts out=phone nodupkey;
by name;
where Phone_1___Value ne '';
run;
 
/* Merge the email and Phone contacts by name to get the email and phone on to one record */
data merged;
merge email phone;
by name;
run;
 
/* Export it out to Google csv once again... */
PROC EXPORT DATA= WORK.Merged
            OUTFILE="&outfile"
            DBMS=CSV REPLACE;
RUN;
 
/* Delete all Work datasets proactively */
proc datasets lib=work;
delete _all_;
quit;
%mend organizeGoogleContacts;
 
%let infile=C:\Documents and Settings\SASTechies\Desktop\google.csv;
%let outfile=C:\Documents and Settings\SASTechies\Desktop\GoogleContacts.csv;
 
%organizeGoogleContacts(&infile,&outfile);

You might also like:


 SAS Interview Questions and Answers(2)
 SAS macro to reorder dataset variables in alphabetical order
 SAS Macro to Create a delimited text file from a SAS data set..
 SAS Interview Questions and Answers(1)

Read full article @ http://sastechies.blogspot.com/2009/11/use-sas-function-propcase-to-streamline.html

Potrebbero piacerti anche