0

特定のデータ列の読み取りに問題があります。私が問題を抱えている生のテキストファイルの列は次のようになります。

55.49
1:23.57
32.22
5:38.43
12:52.17
25.13

形式は 分 分 : 秒 秒 ms ms です。この特定のデータは時間にはなりません。変数を TIME6.2 としてフォーマットしてみました。しかし、データの 70% 以上で欠損値が発生しています。また、幅の調整をいじりました。informat mmss も使用してみましたが、成功しませんでした。しかし、私はそれを間違って使用している可能性があります。今のところ、データを文字値として読み込んでいますが、データを比較できるように数値にする必要があります。

どんなアドバイスでも大歓迎です!

ありがとう!

編集:これらは経過時間(レース結果)であることを書き留めておきたいと思いました。データを読み込んで、1位、2位、3位などのレースタイムを比較したいと思います。

4

1 に答える 1

0

最初に理解する必要があるのは、入力形式と形式の違いです。

Informat は、SAS がテキストを数値に変換するために使用するパターンです。使用したい入力形式はhhmmss..

フォーマットは数値に適用されるものです。特定の数値をどのように表示または印刷するかを SAS に指示します。時間を表すには、印刷したい:と文字を考慮して 6 より大きい幅が必要です。フォーマット.のような大きなものを試してください。time12.2合計幅は 12 で、ms 桁に 2 つのスペースがあります。

編集:テキストファイルが区切られていると仮定すると、入力形式はhhmmss幅が十分でない値を好まないようです。時間を文字として読み取り、関数を$使用input()して時間を数値に変換すると機能します。

data yourdata;
  format finaltime time12.2;
  infile cards dlm=',';
  input age team finaltimec $ score;
  finaltime = input(finaltimec,?? hhmmss.);
  drop finaltimec;
  cards;
20,1,55.49,1
22,1,1:23.57,2
34,1,NA,3
19,2,32.22,4
55,3,5:38.43,5
17,3,12:52.17,6
31,3,25.13,7
;
run;
于 2015-02-22T18:32:38.880 に答える