SAS合并只返回一行
在SAS中,我运行了一个简单的线性回归,并使用以下代码将结果输出到work.outdata(列包括残差、预测、标准误差):SAS合并只返回一行,sas,Sas,在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\u ID。我在同一宏中使用以下代码执行此操作: data wor
proc reg data=model_file;
model &y = &x;
output out=work.outdata r=resid;
title 'model';
run; quit;
我正在尝试将此输出数据连接回原始数据集,称为work.modeldata
。我想加入的ID是u\u ID
。我在同一宏中使用以下代码执行此操作:
data work.mergedf;
merge work.modeldata work.outdata;
by u_id;
run;
但是,我新合并的数据集只包含一行(我有数千行),并且u\u id=1
——但该行确实正确合并了。我已经浏览了SAS文档,并且相信我已经正确地对数据集进行了排序——所有ID都是按升序排序的,并且在每个数据集中似乎都是匹配的。但是,日志文件返回相同的错误:
错误:按变量在数据集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;
在没有看到实际数据的情况下回答这个问题是不可能的,但可以发布的是“当我认为我的数据集已排序但SAS不同意时,该怎么办”的步骤
PROC SORT
:将其作为SAS数据集引入SAS,然后PROC SORT
该数据集。有时,其他DBMS会做出不同的选择,以处理您不一定需要的某些情况模型数据来自哪里?您的PROC REG只引用了MODEL_文件和OUTDATA。@data_null_它是相同的。我刚刚重命名了它,在发布到SO时忘记更改变量名。什么变量是
U\U ID
,为什么您认为代码中提到的三个数据集中的任何一个都会按该变量排序?@TomU\U ID
是表的主键,我相信它是按这个变量排序的,因为所有的表当前都列出了带有U\U ID
升序的行。我检查了每个表的前50行,它们都与U ID
s匹配。modeldata
表最初存储为SAS数据集还是来自其他DBMS?换句话说,work.modeldata
是从第三方数据库对表执行排序操作的结果吗?这些都是很好的建议。数据根本无法发布,不幸的是,我知道它在调试方面有点限制。我最终还是让它工作了,它包括正确地对两个数据集进行排序。我对我的问题进行了编辑,以反映出有什么帮助!