ID番号が長い(たとえば、12184447992012111111)。csvファイルからのprocimportを使用すると、数字の間に「E」が追加されて番号が短くなります(1.2184448E19、フォーマットbest12。およびinformat best32)。ここを閲覧すると、csv形式自体が以前に短縮されていることがわかったので、SASとは関係ありません。だから私は約5つの数字をコピーしてデータラインステートメントを使用しようとしましたが、それでも同じ結果になります....誰かが私が使用する必要のある形式を提案できると役に立ちます。best32を使用します。形式元の番号を取得できません。おそらく、変更された番号を変更するため、実際には、希望する番号ではない12184447992012111872が返されます。
3 に答える
ID変数は実際には「実数」ではなく識別子であるため、文字列として読み込む必要があります。例として示す値は大きすぎて整数として表すことができないため、SASはすべての数値を浮動小数点として格納するため、「精度」が失われます。
PROC IMPORTの使用について言及しているので、それが生成するSASプログラムをコピーし、FORMATおよびINFORMATの仕様を「21」から変更します。と「best32」。「32ドル」に。(またはデータに一致する値。
もちろん、SAS Access to PC File形式を使用している場合は、Excelで列を「テキスト」として結合形式でフォーマットし、SASに直接読み取らせることができます。
csvが値を変更するかどうかはわかりません(これらは単なるテキストファイルです)。Excelスプレッドシートをcsvファイルとして保存する場合を除きます。Excelを使用している場合は、列を数値形式に設定するだけで、小数点以下の桁数はありません。
数学演算を実行する必要がない限り、SASにインポートするときに列をテキストとして扱う方が簡単な場合があります。本当に数値として保持する必要がある場合は、32の形式で強制する必要があります-かなり賢明に科学的記数法に変更するのが最善です(データがバックグラウンドにあり、役に立たないように表示されていると思われますが)。
指数表記を読み取るためのSAS情報があります-Ew.dここで、wは幅、dは小数点以下の桁数です。あなたの場合、完全な数を「失う」ので、おそらく役に立たないでしょう-そして、この情報で読んだ場合に保存される値は、1.2184448 *(10 ^ 19)になります。あなたの場合の唯一の方法は、CSVファイルを生成するプログラムがそれを正しい方法で出力することを確認することです。Excelワークシートからデータを作成する場合は、Excelワークシートの数値をフォーマットして、すべての数字を正しく表示します。