4

投稿する前に Google を試しましたが、あまり役に立ちませんでした。

列に次の値を含むExcel ファイルOpened_DTがあります: 1448300037,15。Excelは、日付の代わりに######文字の束のみを表示します。

私はこのファイルを受け取りましたが、実際の出力がどのような日付形式であるべきかわかりません。機関で口座が開設された日付を記載する必要があります。この Excel 列をデータ セットにインポートする必要がありますSASが、この文字列に頭がおかしくなりそうです :( 変換ユーティリティやアドオンをたくさん試しましたが、うまくいきませんでした。

SAS を使用してこのコラムを読む方法を教えてもらえますか?

これが私のExcelワークブックの例です

4

4 に答える 4

3

あなたのサンプルから、初期データが間違っているように見えます.これはExcel 2007が私に示しているものです:

Excel のスクリーンショット

確かに、実際の値は大きすぎますDate- 今日の日付のシリアル番号は41335です。Opening_DTアプリケーションが正しく値を計算していることを確認してください。

Excel の仕様と制限によると:

Latest date allowed for calculation         December 31, 9999
Largest amount of time that can be entered  9999:59:59

シリアル対応December 31, 9999です2958465

于 2013-03-02T12:13:15.837 に答える
1

Excel ワークシートの列は、小数点をコンマに変換する技術を使用して作成されたようです。引用された値の例 ( 1448300037,15 ) は、SAS タイムスタンプ に相当し22NOV2005:17:33:57.15ます。

その値が正当で、これを SAS データセットに変換したい場合は、Excel で列を TEXT としてフォーマットし、それを新しいワークブックとして保存し、その新しいワークブックを PROC IMPORT で SAS に読み込むことをお勧めします。次に、結果を後処理して、その変数を SAS 日時変数として再読み込みします。説明する:

proc import out=have
            datafile="path-to-workbook\workbook.xlsx"
            replace
            dbms=excel;
     sheet="sheetname";
run;

data want;
   set have(rename=(Open_DT=prevOpen_DT));
   format Open_DT datetime21.2;
   Open_DT = input(prevOpen_DT,numx13.2);
   drop prevOpen_DT;
run;

ステートメントで使用されるnumxSAS 入力形式inputは、文字変数を読み取り、カンマを小数点として解釈します。

于 2013-03-02T19:03:17.763 に答える
1

あなたの地域の小数点区切り記号はカンマなので、1448300037,15は有効な数字だと思います......

それが 1960 年 1 月 1 日からの秒数を表す場合、Excel では、開始日 (1960 年 1 月 1 日) を日数で表した数値に追加することで、有効な日付/時刻に変換できます (これは、 1 日の秒数)、A2 のデータでこの式を使用します。

=DATE(1960,1,1)+A2/86400

日付/時刻としてフォーマットします。dd.mm.yyyy hh:mm

于 2013-03-04T09:51:21.413 に答える
0

列幅を広くしてください。データが収まらない場合、Excel はハッシュを表示することがあります。

于 2013-03-02T11:17:10.743 に答える