在 SAS (PROC SQL) 中按分钟过滤数据 - 在 WHERE 子句中使用时间?
Filter data by minutes in SAS (PROC SQL) - Using time in WHERE clause?
正在尝试提取所有 phone 呼叫在 1 分钟内得到应答的记录。
我的数据集 p1 看起来有点像这样
Call_date pick_up
05/30/2018 0:19
05/29/2018 1:45
05/29/2018 0:37
05/28/2018 1:01
这是在 SAS 中。当我 运行 PROC CONTENTS 时,我得到的 pick_up 列的信息是 TIME20.3
所以我尝试运行这个代码:
PROC SQL;
SELECT p1.call_date,p1.pick_up
FROM p1
WHERE p1.pick_up < 1:00time20.3;
QUIT;
我收到以下错误:
ERROR 22-322: Syntax error, expecting one of the following: ;, !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, EXCEPT,
GE, GET, GROUP, GT, GTT, HAVING, INTERSECT, LE, LET, LT, LTT, NE, NET, NOT, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~,
~=.
ERROR 76-322: Syntax error, statement will be ignored.
有没有一种简单的方法可以按分钟和秒过滤我的数据?
谢谢!
SAS 以秒为单位存储时间,因此您可以执行以下操作。
WHERE p1.pick_up < 60;
您还可以按如下方式指定时间文字:
WHERE p1.pick_up < '01:00't;
格式控制变量的外观,但不改变底层变量。
您可以在此处找到有关 SAS 日期和时间的教程:
https://communities.sas.com/t5/SAS-Communities-Library/Working-with-Dates-and-Times-in-SAS-Tutorial/ta-p/424354
正在尝试提取所有 phone 呼叫在 1 分钟内得到应答的记录。
我的数据集 p1 看起来有点像这样
Call_date pick_up
05/30/2018 0:19
05/29/2018 1:45
05/29/2018 0:37
05/28/2018 1:01
这是在 SAS 中。当我 运行 PROC CONTENTS 时,我得到的 pick_up 列的信息是 TIME20.3
所以我尝试运行这个代码:
PROC SQL;
SELECT p1.call_date,p1.pick_up
FROM p1
WHERE p1.pick_up < 1:00time20.3;
QUIT;
我收到以下错误:
ERROR 22-322: Syntax error, expecting one of the following: ;, !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, EXCEPT,
GE, GET, GROUP, GT, GTT, HAVING, INTERSECT, LE, LET, LT, LTT, NE, NET, NOT, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~,
~=.
ERROR 76-322: Syntax error, statement will be ignored.
有没有一种简单的方法可以按分钟和秒过滤我的数据?
谢谢!
SAS 以秒为单位存储时间,因此您可以执行以下操作。
WHERE p1.pick_up < 60;
您还可以按如下方式指定时间文字:
WHERE p1.pick_up < '01:00't;
格式控制变量的外观,但不改变底层变量。
您可以在此处找到有关 SAS 日期和时间的教程: https://communities.sas.com/t5/SAS-Communities-Library/Working-with-Dates-and-Times-in-SAS-Tutorial/ta-p/424354