在 SAS 中创建时间变量的问题
Problems with creating Time variable in SAS
我正在尝试将时间放在 HH:MM:SS AM/PM 中,因为我将小时、分钟和 AM/PM 分为 3 个不同的变量。我的数据集如下所示:
hr_bedhr hr_bedmin hr_bedampm
10 0 PM
10 30 PM
12 55 AM
我希望输出看起来像这样:
hr_bedhr hr_bedmin hr_bedampm bedtime
10 0 PM 22:00:00
10 30 PM 22:30:00
12 55 AM 00:55:00
我已经尝试了几种代码,但它们似乎都不起作用。这是我试过的一些代码。
data want; set have;
put (hr_bedhr, time8.);run;
这个返回 0:00:10,如果我们以第一行数据为例,实际上它应该是 10:00:00。
感谢您的帮助!
只需将它们与值之间的 space 组合起来并使用 TIME 信息。
data have ;
input hr_bedhr hr_bedmin hr_bedampm $;
cards;
10 0 PM
10 30 PM
12 55 AM
;
data want;
set have;
time = input(catx(' ',hr_bedhr,hr_bedmin,hr_bedampm),time8.);
format time tod8.;
run;
结果:
Obs hr_bedhr hr_bedmin hr_bedampm time
1 10 0 PM 22:00:00
2 10 30 PM 22:30:00
3 12 55 AM 00:55:00
另一种方法 - 如果是 PM,则加 12 并使用 HMS() 函数。
IFN 检查它是否 AM/PM 然后将 12 添加到小时并将该值传递给 HMS 函数。
data have ;
input hr_bedhr hr_bedmin hr_bedampm $;
cards;
10 0 PM
10 30 PM
12 55 AM
;
data want;
set have;
time = hms(hr_bedhr+ ifn(hr_bedampm='PM', 12, 0), hr_bedmin, 0);
format time tod8.;
run;
我正在尝试将时间放在 HH:MM:SS AM/PM 中,因为我将小时、分钟和 AM/PM 分为 3 个不同的变量。我的数据集如下所示:
hr_bedhr hr_bedmin hr_bedampm
10 0 PM
10 30 PM
12 55 AM
我希望输出看起来像这样:
hr_bedhr hr_bedmin hr_bedampm bedtime
10 0 PM 22:00:00
10 30 PM 22:30:00
12 55 AM 00:55:00
我已经尝试了几种代码,但它们似乎都不起作用。这是我试过的一些代码。
data want; set have;
put (hr_bedhr, time8.);run;
这个返回 0:00:10,如果我们以第一行数据为例,实际上它应该是 10:00:00。
感谢您的帮助!
只需将它们与值之间的 space 组合起来并使用 TIME 信息。
data have ;
input hr_bedhr hr_bedmin hr_bedampm $;
cards;
10 0 PM
10 30 PM
12 55 AM
;
data want;
set have;
time = input(catx(' ',hr_bedhr,hr_bedmin,hr_bedampm),time8.);
format time tod8.;
run;
结果:
Obs hr_bedhr hr_bedmin hr_bedampm time
1 10 0 PM 22:00:00
2 10 30 PM 22:30:00
3 12 55 AM 00:55:00
另一种方法 - 如果是 PM,则加 12 并使用 HMS() 函数。
IFN 检查它是否 AM/PM 然后将 12 添加到小时并将该值传递给 HMS 函数。
data have ;
input hr_bedhr hr_bedmin hr_bedampm $;
cards;
10 0 PM
10 30 PM
12 55 AM
;
data want;
set have;
time = hms(hr_bedhr+ ifn(hr_bedampm='PM', 12, 0), hr_bedmin, 0);
format time tod8.;
run;