0

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

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

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

任何建议将不胜感激!

谢谢!

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

4

1 回答 1

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;
于 2015-02-22T18:32:38.880 回答