将 AM/PM 的小时数转换为 SAS 中的数字小时数
Convert hour with AM/PM to numeric hour in SAS
我在 SAS 中有一个数据集,它具有“8AM”、“11AM”、“5PM”等形式的字符值。我的问题是如何将它们转换为数值,最好是 24小时格式?
我得到的最接近的是 1) newvar = input(oldvar, 1.);
或 2) newvar = input(oldvar, 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
我在 SAS 中有一个数据集,它具有“8AM”、“11AM”、“5PM”等形式的字符值。我的问题是如何将它们转换为数值,最好是 24小时格式?
我得到的最接近的是 1) newvar = input(oldvar, 1.);
或 2) newvar = input(oldvar, 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