我有一个数据集,我正在通过分组声明阅读它:
data TEMPDATA;
SET RAWDATA; by SYMBOL DATE;
run;
proc expand data=TEMPDATA out=GAPDATA to=day method=step;
by symbol date;
id time;
run;
但是,我意识到如果只有一个观察的组中有记录,则proc扩展过程将返回错误。
例如:
| Symbol | Date | Time | BB | BO | MIDPRICE |
|--------|----------|------|----|----|----------|
| AAPL | 20130102 | 2 | 2 | 3 | 2.5 |
如果只有一条AAPL记录,SAS将拒绝执行该命令。
因此,我想知道是否有办法丢弃所有记录,使用相同的符号,只有一个记录在按组(符号,日期)?
答案 0 :(得分:4)
由于您正在使用数据步骤,因此只需添加逻辑来删除单例。任何记录都是其组中的第一个记录和最后一个记录,表示该组中只有一条记录。
data TEMPDATA;
SET RAWDATA;
by SYMBOL DATE;
if first.date and last.date then delete;
run;
答案 1 :(得分:1)
SAS PROC SQL
中的一个不错的功能是,您可以分组并添加摘要度量,同时保留所有细节。这使得这种移除变得容易(并且在许多其他环境中也是有用的)。即。
PROC SQL;
CREATE TABLE tempdata2 AS
SELECT *
FROM tempdata
GROUP BY symbol, date
HAVING count(*) > 1
;
QUIT;