gpt4 book ai didi

time - 格式化 HH :MM column when reading data into SAS

转载 作者:行者123 更新时间:2023-12-01 00:43:55 26 4
gpt4 key购买 nike

我是一名 R 用户和 SAS 初学者,试图将 csv 文件读入 SAS。我面临的问题是名为“TIME”的列,其中包含格式为“hh:mm”的时间数据,例如“下午 12 点 23 分”。在 R 中,它就像 as.POSIXct(df$TIME, format = "%I:%M %p") 一样简单,我的小时会立即转换为时间值(时区和今天的日期可以删除)。

这就是我尝试在 SAS 中实现它的方式:

/* firstly `rename` "TIME" to "DAY_HOUR" */
data mid.prac1;
set mid.prac1;
rename time = DAY_HOUR;
run;
/*runs successfully */

/* remove unwanted characters from DAY_HOUR */
data mid.prac2;
set mid.prac1;
DAY_HOUR = compress(DAY_HOUR, 'PMAM');
proc print; run;
/* runs successfully */

/* format hh:mm as time */
data mid.prac3;
set mid.prac2;
informat DAY_HOUR time10.;
run;
**/*Error: ERROR 48-59: The informat $TIME was not found or could not be loaded.*/**

time informat 不存在?我在 SAS 网站上阅读了这份文档:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000201204.htm我认为我做对了。我是整个 SAS 世界的新手,如果我没有遵循提问和粘贴示例数据等方面的惯例,我深表歉意。

最佳答案

通过输入函数解析即可:

DAY_HOUR_FOR_ME = INPUT(DAY_HOUR,TIME10.);

这会将 DAY_HOUR 字符变量转换为 DAY_HOUR_FOR_ME 数值变量。如果您需要将其格式化为时间,请使用 FORMAT 语句:

FORMAT DAY_HOUR_FOR_ME time10.;

好的...

FORMAT DAY_HOUR_FOR_ME timeampm11.;

信息

SAS 使用信息格式来读取数据。因此,给定一个如下所示的字符串:

09:00:00

您可以要求 SAS 将其转换为 9AM 的数字表示,方法是提交:

time_i_want = input(text,time8.);

其中 8 只是字符串 text 的长度。然后 SAS 将存储一个变量 time_i_want 作为 00:00 和 09:00 之间的秒数。

格式

格式用于以可用格式显示数据。如果我问你时间,而你告诉我自 1960 年 1 月 1 日以来已经过了多少秒,我会很不高兴。然而,这是 SAS 存储 DATETIME 值的方式:

'01JAN1960:00:01:00'dt = 60;
'31DEC1959:23:59:30'dt = -30;

等等

因此,FORMAT 语句可以在任何数据步骤中使用,以强制生成的数据集(在 DATA 语句中命名的数据集)以特定格式显示值.

TIMEAMPM

就是这样一种格式。但是,TIMEAMPM 不是INFORMAT

信息和格式

一些信息格式由等效格式镜像。 TIME8. 就是一个例子。您可以要求 SAS 使用 informat 读入时间值:

01:00:32

然后将其存储为数值 3632。然后可以使用 TIME8. format 对其进行格式化,这样显示它:

01:00:32

关于time - 格式化 HH :MM column when reading data into SAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com