我是SAS的新手,我正在为我的代码而苦苦挣扎。我想要一些帮助。我这样想对吗?我有一个很大的表,我想从某些日期提取数据。我的两个日期: 1969-12-01和1948-01-01我的示例代码:
data null;
call symput ('timenow',put (time(),time.));
call symput ('datenow',put (date(),date9.));
run;
title "The current time is timenow and the date is datenow";
proc print data=sashelp.buy;
run; 发布于 2021-03-23 21:08:22
因此,首先了解一下您的数据集。例如,运行PROC CONTENTS。
proc contents data=sashelp.buy; run;这将向您显示名为DATE的变量具有日期值(自1960年以来的天数)。
因此,要引用特定的日期,请使用日期文字。这是DATE informat可以读取的样式中的带引号的字符串,后跟字母D。然后可以使用WHERE语句来过滤数据。
data want;
set sashelp.buy;
where date = '31dec1969'd ;
run;这将找不到任何观察值,因为该日期没有出现在该数据集中。
如果要选择多个日期,可以使用OR添加更多条件。
where (date = '31dec1969'd) or (date = '01jan1948'd);还可以使用IN运算符:
where date in ('31dec1969'd '01jan1948'd);请注意,如果您的变量包含日期时间值(秒数),则要选择特定日期,您需要使用一系列日期时间文字:
where datetime between '31dec1969:00:00'dt and '31dec1969:11:59:59'dt);或者将秒数转换为天数并与日期文字进行比较。
where datepart(datetime) = '31dec1969'd ;发布于 2021-03-24 10:30:46
欢迎使用StackOverflow Sportsguy3090。
在这里,我创建了一个名为sample的数据集,其中包含一些样本日期。该数据集有一个名为name的变量和另一个名为date的变量。在内部,SAS将日期存储为1970年1月1日或之后的天数。这看起来很粗糙。因此,我使用format语句将日期显示为包含月/日/年的10个字符的字符串。
data sample;
name = "Abe "; date = "01Dec1969"d; output;
name = "Betty"; date = "01Jan1948"d; output;
name = "Carl"; date = "06Jun1960"d; output;
name = "Doug"; date = "06Dec1969"d; output;
name = "Ed"; date = "01Jan1947"d; output;
format date mmddyy10.;
run;下面的代码将数据子集,并将良好的记录放入一个名为keepers的新数据集中。它只保留日期范围内的记录(包括限制日期)。
data keepers;
set sample;
where date between "01jan1948"d and "01Dec1969"d;
run;我希望这会有帮助..。如果没有的话,再发一枚照明弹。
https://stackoverflow.com/questions/66762703
复制相似问题