2016-12-07 15 views
1

コンマを使用して項目をリストする脚注があります。出力は.csvに送信する必要があります。 .csvはコンマで区切られているため、Excelで開いたときにリストの項目が別のセルに出力されます。 .csvにエクスポートするときにカンマをエスケープするにはどうすればよいですか?例えばSAS:コンマを含む文字列をCSV内の単一セルにエクスポート

ods csvall file = "test.csv"; 

title 'The first seven letters of the alphabet.'; 
data test; 
    input x $ ; 

    datalines; 
    a 
    B 
    c 
    D 
    e 
    F 
    G 
    ; 
run; 

footnote 'Observe that the letters a, c, and e are lowercase.'; 
proc print data = test; 
run; 

ods csvall close; 

私は

footnote 'Observe that the letters a\, c\, and e are lowercase.'; 

にエスケープ記号を定義するods escapechar "\";を使用して脚注を変更しようとしているが、これは動作しません。 csvallはODSの一部ではないかもしれません。これを超えて、私は他に何を試みるべきか分からない。

The first seven letters of the alphabet. 
"Obs","x" 
"1","a" 
"2","B" 
"3","c" 
"4","D" 
"5","e" 
"6","F" 
"7","G" 
Observe that the letters a, c, and e are lowercase. 

がUPDATE:

これは、上記のコードによって生成されたファイル内のテキストである応答の光の中で私の質問を再考、差異細胞への脚注の分割はSASによるものではありません。これは、CSVをインポートしたときのExcelによるものです。しかし、私は自動的にこの動作を無効にする方法はないと思います。

+0

これを行うには 'ods csvall'を使用する必要がありますか、純粋なデータステップソリューションを開いていますか? – user667489

+0

送信している文字列に引用符を追加しようとしましたか? 'FOOTNOTE '"リストa、b、c "';' – Tom

答えて

1

脚注のテキストに単一引用符を追加する場合は、カンマが引用されるとバックフィールド1に読み取ることができます。

私はあなたの目標は、このように見えるテキストを含むファイルを生成することであると推定
ods csvall file = "~/test.csv"; 
title 'The first seven letters of the alphabet.'; 
data test; 
    input x $ ; 
    datalines; 
    a 
    B 
    c 
    D 
    e 
    F 
    G 
    ; 
run; 

footnote "'Observe that the letters a, c, and e are lowercase.'"; 
proc print data = test; 
    run; 
ods csvall close; 


data _null_; 
    infile "~/test.csv" dsd missover; 
    length field1-field2 $60.; 
    input (field:)(:); 
    put (field:)(=); 
    run; 
1

"The first seven letters of the alphabet." 
"Obs","x" 
"1","a" 
"2","B" 
"3","c" 
"4","D" 
"5","e" 
"6","F" 
"7","G" 
"Observe that the letters a, c, and e are lowercase." 

これは、あなたが期待しているように動作する必要があります - フッタの引用されたテキスト内のコンマはいけませんほとんどのプログラムでフィールド区切りとして解釈されます。

それを行うことは比較的簡単であるように私は、これはデータステップではなく、ods csvallを使用して行うことをお勧め:

data _null_; 
    file "/tmp/test2.csv" dsd; 
    set test end = eof; 
    if _n_ = 1 then put '"The first seven letters of the alphabet."'; 
    put _n_ x; 
    if eof then put '"Observe that the letters a, c, and e are lowercase."'; 
run; 

N.B.文字変数にカンマや埋め込み引用符(二重引用符で囲まれたもの)が含まれている場合にのみ引用符を追加し、文字列リテラルの前後に引用符を追加する必要があります。

関連する問題