如何读取时间mm:ss.ss格式为sas?

时间:2015-02-22 17:53:39

标签: sas datastep

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

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

表格是分钟:秒秒ms ms。这个特定的数据不会进入小时。我尝试将变量格式化为TIME6.2;但我收到超过70%的数据缺失值。我也调整了宽度。我也尝试使用信息,但我没有任何成功。但是我可能错误地使用它。截至目前,我正在读取数据作为字符值,但我需要它是一个数值,所以我可以进行数据比较。

非常感谢任何建议!

谢谢!

编辑:我想记下这些已经过去的时间(比赛结果)。我希望能够读取数据,然后比较第一,第二,第三等等的比赛时间。

1 个答案:

答案 0 :(得分:0)

您需要了解的第一件事是信息和格式之间的区别。

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;