在SAS中,我运行了一个简单的线性回归,并使用以下代码将结果输出到work.outdata
(列包括残差,预测,标准错误):
proc reg data=model_file;
model &y = &x;
output out=work.outdata r=resid;
title 'model';
run; quit;
我正在尝试将此输出数据连接回原始数据集,称为work.modeldata
。我想加入的ID是u_id
。我在同一个宏中使用以下代码:
data work.mergedf;
merge work.modeldata work.outdata;
by u_id;
run;
但是,我新合并的数据集只包含一行(我有数千行),u_id = 1
- 该行确实正确合并。我已经浏览了SAS文档here,并且相信我已经正确地对数据集进行了排序 - 所有ID都按升序排序,并且在每个数据集中看起来都匹配。但是,日志文件返回相同的错误:
ERROR: BY variables are not properly sorted on data set WORK.MODELDATA.
我真的对造成这个问题的原因感到茫然。我曾尝试使用PROC SORT
,但是日志文件是否有人对为什么只返回一行有任何见解?
proc sort data=work.model_file; by u_id; run;
proc sort data=work.outdata; by u_id; run;
data work.merged_data;
merge work.model_file work.outdata;
by u_id;
run;
答案 0 :(得分:1)
如果没有看到您的实际数据,就无法回答这个问题,但可以发布的内容是“当我认为我的数据集已经排序但SAS不同意时该怎么办”。
PROC SORT
:将其作为一个数据库引入SAS SAS数据集,然后是PROC SORT
该数据集。有时,其他DBMS会对如何处理您不一定需要的某些案例做出不同的选择。