LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (January 2009, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Thu, 29 Jan 2009 21:55:47 -0500
Reply-To:   "Howard Schreier <hs AT dc-sug DOT org>" <schreier.junk.mail@GMAIL.COM>
Sender:   "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:   "Howard Schreier <hs AT dc-sug DOT org>" <schreier.junk.mail@GMAIL.COM>
Subject:   Re: Import CSV file to SAS

On Thu, 29 Jan 2009 06:19:30 -0500, Nat Wooding <Nathaniel.Wooding@DOM.COM> wrote:

>The code in the reply below will not work for several reasons so I have >adjusted it a bit: > >Data csv; > >infile CARDS /* i just put the data here for convenience */ >firstobs=3 >dlm=',' dsd missover; > >informat ClientName $50. Protocol $ 8. shortname $ 8.; >input ClientName Protocol ShortName StatusID StudyID ; >cards; >COL1,COL2,COL3,COL4,COL5 >ClientName,Protocol,ShortName,StatusID,StudyID >ABC co ltd,ABC-3001,ABC3001,3,2314 >DEF , D 123, D123, 4, 2256 >RUN; >PROC PRINT; >RUN; > > >There should not be commas in the input statement (This was the result, I >assume, of cutting and pasting) > >The length followed the input statement but by that time, the SAS >supervisor had already set protocol and shortname to be numeric variables >since there was no other information. I changed this to an informat and >placed it before the input statement. > >Now, in these 100 CSVs, are there always the same variables and are they in >the same order? > > >Nat Wooding >Environmental Specialist III >Dominion, Environmental Biology >4111 Castlewood Rd >Richmond, VA 23234 >Phone:804-271-5313, Fax: 804-271-2977 > > > > murugesh > <iammurugesh@GMAI > L.COM> To > Sent by: "SAS(r) SAS-L@LISTSERV.UGA.EDU > Discussion" cc > <SAS-L@LISTSERV.U > GA.EDU> Subject > Re: Import CSV file to SAS > > 01/29/2009 04:09 > AM > > > Please respond to > murugesh > <iammurugesh@GMAI > L.COM> > > > > > > >On Jan 29, 8:05 am, "sukumarbalusw...@gmail.com" ><sukumarbalusw...@gmail.com> wrote: >> Hi, >> >> I'm having 100 CSV files.with the following 5 columns. >> >> Please help me how to import these, The first row is not important for >> me. I want to have the second row as a "Variable Name" in SAS Data >> Set. And my data starts from the 3rd row. >> >> eg of one CSV file. >> >> COL1,COL2,COL3,COL4,COL5 >> ClientName,Protocol,ShortName,StatusID,StudyID >> ABC co ltd,ABC-3001,ABC3001,3,2314 >> DEF , D 123, D123, 4, 2256 >> >> Thanks in advcance. >> >> Regards, >> Sukumar > >Hi Sukumar, > >Please use the following code > >data ex1; >infile 'C:\Documents and Settings\mp31795\Desktop\model.csv' >firstobs=3 lrecl=32767 >dlm=',' dsd missover; >input ClientName $ ,Protocol,ShortName; >length ClientName $50. Protocol 8. shortname 8.; >run;

Nat's code can be extended to process all 100 files. Test data:

data _null_; file 'murugesh101.csv'; put 'COL1,COL2,COL3,COL4,COL5'; put 'ClientName,Protocol,ShortName,StatusID,StudyID'; put 'ABC co ltd,ABC-3001,ABC3001,3,2314'; put 'DEF , D 123, D123, 4, 2256'; file 'murugesh202.csv'; put 'COL1,COL2,COL3,COL4,COL5'; put 'ClientName,Protocol,ShortName,StatusID,StudyID'; put 'GHI , GHI 999, GHI999, 9, 9999'; run;

Code:

data all; length csvname $100 source $ 15;; infile 'murugesh*.csv' firstobs=3 dsd missover eov=boundary filename=csvname; boundary = 0; input @; if boundary or lag(boundary) then delete; source = scan(scan(csvname,-1,'\'),1,'.'); informat ClientName $50. Protocol $ 8. shortname $ 8.; input ClientName Protocol ShortName StatusID StudyID ; run;

Result:

Status Study source ClientName Protocol shortname ID ID

murugesh101 ABC co ltd ABC-3001 ABC3001 3 2314 murugesh101 DEF D 123 D123 4 2256 murugesh202 GHI GHI 999 GHI999 9 9999


Back to: Top of message | Previous page | Main SAS-L page