我在SAS中有一个数据集,其格式为" 8 AM"," 11 AM"," 5 PM"等等。我的问题是如何我可以将这些转换为数值,最好是24小时格式吗?
我最接近的是1)newvar = input(oldvar, 1.);
或2)newvar = input(oldvar, 2.);
,但这对每次观察都不起作用。
非常感谢任何帮助。
答案 0 :(得分:2)
没有专门的信息,所以如果没有先进行预处理,就不能使用INPUT
功能。 TIMEw.
信息可用于如下所示的值:
8:00 PM
所以,我们只需要几行代码(可以压缩成一行,但更好的可读性):
pm =tranwrd(oldvar,'P',':00 P');
ampm =tranwrd(pm,'A',':00 A');
newvar =input(ampm,time8.);
我们使用TRANWRD
函数将'A'和'P'的发生率分别替换为':00 A'和':00 P',以便它们适合信息并且可以作为时间价值。
在数据步骤中使用FORMAT
语句将值显示为24小时:
FORMAT newvar TIME9.;
额外阅读
TRANWRD函数 - http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000215027.htm
TIME格式文档 - http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000197928.htm