如何将一次mm:ss.ss格式读入sas?

How to read in a time mm:ss.ss format into sas?

我在读取某一特定数据列时遇到问题。我遇到问题的原始文本文件列如下所示:

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

形式为minute minute : second second ms ms。此特定数据不会进入小时数。我尝试将变量格式化为 TIME6.2;但我得到了超过 70% 的数据的缺失值。我也搞砸了调整宽度。我也尝试使用 informat mmss,但没有成功。但是我可能使用不当。到目前为止,我正在以字符值的形式读取数据,但我需要它是一个数值,这样我才能进行数据比较。

如有任何建议,我们将不胜感激!

谢谢!

编辑:我想指出这些是经过的时间(比赛结果)。我希望读入数据,然后能够比较比赛时间,排名第一、第二、第三等

您首先需要了解的是信息格式和格式之间的区别。

Informat 是 SAS 用来将文本转换为数字的模式。您要使用的信息格式是 hhmmss..

格式是应用于数字的东西;它告诉 SAS 您希望如何显示或打印特定数字。为了表示您的时间,您需要大于 6 的宽度来说明要打印的 :. 字符。尝试更大的格式,例如 time12.2 格式。总宽度为 12,ms 数字有两个空格:

编辑:假设您的文本文件是分隔的,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;