如何在SQL或SAS中关联统计数据表与参考表以补充字段
SAS实现统计表关联参考表的正确方法
以下两种方法都可以实现将TABLE_REFERENCE中的PROVINCE字段补充到TABLE_STATS对应ID的记录中:
方法一:PROC SQL 左连接
使用SQL左连接可直接关联两个表,确保TABLE_STATS的所有记录都被保留,若参考表中无对应ID,PROVINCE字段会显示缺失值:
PROC SQL; CREATE TABLE COMBINED_DATA AS SELECT S.ID, S.YEARH, S.MONTH, S.STATS, R.PROVINCE FROM TABLE_STATS S LEFT JOIN TABLE_REFERENCE R ON S.ID = R.ID; QUIT;
方法二:DATA步 MERGE
使用DATA步合并需先确保两个表按关联字段ID排序,再通过合并语句完成关联:
/* 1. 对两个表按ID排序 */ PROC SORT DATA=TABLE_STATS; BY ID; RUN; PROC SORT DATA=TABLE_REFERENCE; BY ID; RUN; /* 2. 合并表,仅保留统计表的记录 */ DATA COMBINED_DATA; MERGE TABLE_STATS (IN=IN_STATS) TABLE_REFERENCE (KEEP=ID PROVINCE); BY ID; IF IN_STATS; RUN;
注:如果之前尝试失败,大概率是DATA步合并时未提前排序,或者SQL使用了内连接(INNER JOIN)导致丢失部分记录,左连接和带
IN=条件的MERGE能确保统计表的所有数据被保留。
内容的提问来源于stack exchange,提问作者Simard
相关产品推荐
相关产品推荐

