2016-11-27 2 views
0

私のファイルは、次のようになります。なぜSASが適切にコンマ区切り文字に基づいてファイルを読み込むか、フルラインを読んでいません

"John","Smith","Blah, John B","1234 N Something St","New Orleans","Orleans","LA",70116,"555-555-5555","666-555-1234","[email protected]","http://www.something.com" 
"John2","Smith2","Blah2, John2 B","4567 S Blah St","New Orleans2","Orleans2","LA2",70116,"777-555-5555","777-555-1234","[email protected]","http://www.something2.com" 

ファイルはかなり大きいですが、私は簡単にするためここでの唯一の2行を保管しております。

マイSASコードは次のとおりです。

data sample; 
    infile '/folders/myfolders/samplefile2.csv' dsd dlm="," missover; 
    input first_name$ last_name$ company_name$ address$ city$ county$ state$ zip$ phone1$ phone2$ email$ web$; 
run; 

proc print data=sample; 
run; 

私は取得しています出力は次のようになります。

    c 
        o 
    f    m 
    i  l  p 
    r  a  a 
    s  s  n  a 
    t  t  y  d     c     p  p 
    _  _  _  d     o  s   h  h  e 
    n  n  n  r  c  u  t   o  o  m 
O a  a  a  e  i  n  a z  n  n  a  w 
b m  m  m  s  t  t  t i  e  e  i  e 
s e  e  e  s  y  y  e p  1  2  l  b 

1 John Smith Blah, Jo 1234 N S New Orle Orleans LA 70116 555-555- 666-555- [email protected] http://w 

私はデータを正しく読み取ることができませんか、なぜそれも読んでいませんよ、なぜ私の質問があります二行目?

+0

個人情報が含まれなくなるように質問を編集しました。 StackOverflowに他の人の個人情報を投稿しないでください。代わりに、ダミーの情報を作成する時間を取る。 –

答えて

0

最初の明らかな問題は、最初の15文字をFIRST_NAME変数に読み込んで区切り文字を無視することです。それはラインの残りの部分を台無しにするでしょう。

区切られたファイルから読み込むときは、書式付きスタイルの代わりにリストスタイルのINPUTステートメントを使用する必要があります。また、私がSASを最初にどのように使用するかに基づいて推測するのではなく、変数を定義すると、自分のプログラムがはるかに明確になります。だからあなたのプログラムを変換しましょう。

data sample; 
    infile '/folders/myfolders/samplefile2.csv' dsd dlm="," TRUNCOVER; 
    LENGTH first_name $15 last_name $8 company_name $8 
     address $8 city $8 county $8 state $8 zip $8 
     phone1 $8 phone2 $8 email $8 web $8 
    ; 
    input first_name -- web ; 
run; 

これはまた、あなたは彼らが保持するのに必要な値についてあまりにも短いものとして(EMAILやWEBなど)あなたの変数の多くが定義されていることを示しています。

2行目の問題については、行間に適切な行末文字がないことが原因と考えられます。あなたがUnix上で読んでいるように見えるのは、行末の文字がLF(改行または '0A'x)ではなくCR(改行または' 0D'x)であるためです。 INFILE文にTERMSTR=CRを追加してみてください。

+0

ありがとうございます。 @トムそれはうまく動作します。他のデータを読むのにも助けてくれますか?このコードは最初の行だけを読み込みます。他の人を読む方法。 – user1573470

+0

うわー。ありがとう@トム。それは動作します。はい、私はUNIXを使用しており、行末がCRだったことが判明しました。ありがとうございました。 – user1573470

+0

元のMacはCRの末尾に使用されていましたが、Macは現在Unixを使用しています。しかし、MAC上のExcelは、私が知っている唯一のプログラムであり、MacがまだCRを行末として使用していると考える。別の種類のファイルを選択して、通常の行末を使用することができます。 – Tom

関連する問題