Merge 不使用键变量合并sas数据集

Merge 不使用键变量合并sas数据集,merge,sas,Merge,Sas,我试图在没有单个键变量的情况下合并两个数据集。两个数据集中的数据如下所示: study_id.....round....other variables different between the two sets A000019....R012....etc A000019....R013 A000047....R013 A000047....R014 A000047....R015 A000267....R014 这是我的密码 DATA RAKAI.complete;

我试图在没有单个键变量的情况下合并两个数据集。两个数据集中的数据如下所示:

study_id.....round....other variables different between the two sets
A000019....R012....etc  
A000019....R013  
A000047....R013  
A000047....R014  
A000047....R015  
A000267....R014  
这是我的密码

DATA RAKAI.complete;
length study_id $ 8;
MERGE hivgps2 rccsdata;
BY study_id round;
RUN;
我试图通过研究id和舍入来合并,这是数据集中仅有的两个共享变量。但它只是将这两个集合堆叠起来,从而创建两倍正确的ID数。“研究id”和“轮”的组合提供了唯一标识符,但没有一个变量提供。通过组合两个数据集共享的两个变量来编码一个新的唯一id是否最有意义

非常感谢

我意识到我可以在这里发布我想要处理潜在不需要的空格的代码

DATA hivgps2;
SET hivgps2;
study_id = compress(study_id);
round= compress(round);
RUN;

DATA rccsdata;
SET rccsdata;
study_id = compress(study_id);
round=compress(round);
RUN;

您可以尝试,也可以只使用proc sql连接:

proc sql;
    create table rakai.complete as select
        a.*, b.*
        from hivgps2 as a
        full join rccsdata as b
        on a.study_id = b.study_id and a.round = b.round;
quit;

您可以尝试,也可以只使用proc sql连接:

proc sql;
    create table rakai.complete as select
        a.*, b.*
        from hivgps2 as a
        full join rccsdata as b
        on a.study_id = b.study_id and a.round = b.round;
quit;

您的代码是由多个变量合并的正确格式。这两个数据集中的记录都包含在内,因此如果所有键都不匹配,则结果将与使用SET而不是MERGE时相同

您确定这两组数据之间存在重叠吗?检查变量的长度是否相同。如果它们是字符,则确保值在使用大写和小写字母时一致。确保这些值没有前导空格或其他非打印字符。还要确保没有将格式附加到其中一个数据集,以便看到打印的值不是数据中的实际值

在清理数据的步骤中,应该强制变量的长度保持一致。此外,还可以压缩值中的多个空格。我喜欢消除任何不是普通7位ASCII码的代码。这将消除制表符、不间断空格、空值和其他奇怪的东西。在正常的7位ASCII中,可打印字符介于!('21'x或33位小数)和~('7E'x或126位小数)


您的代码是由多个变量合并的正确格式。这两个数据集中的记录都包含在内,因此如果所有键都不匹配,则结果将与使用SET而不是MERGE时相同

您确定这两组数据之间存在重叠吗?检查变量的长度是否相同。如果它们是字符,则确保值在使用大写和小写字母时一致。确保这些值没有前导空格或其他非打印字符。还要确保没有将格式附加到其中一个数据集,以便看到打印的值不是数据中的实际值

在清理数据的步骤中,应该强制变量的长度保持一致。此外,还可以压缩值中的多个空格。我喜欢消除任何不是普通7位ASCII码的代码。这将消除制表符、不间断空格、空值和其他奇怪的东西。在正常的7位ASCII中,可打印字符介于!('21'x或33位小数)和~('7E'x或126位小数)


我可能应用错了,但当我插入代码时,它仍然会给我一个82206个观察值的未组合集(每组包含41103个)。我正在拍摄一套完全合并的41103 obs。我看错了吗?如果你有
study\u id
round
变量来识别两个数据集中的观察值,那么这应该相应地将它们合并起来。你能发布你的数据集的样本吗?当然可以,但我不知道如何正确地做。我的第一个问题,你能给我指一个资源,让我知道如何以正确的方式去做吗?许多Anksi可能应用错误,但当我插入代码时,它仍然会给我一个82206个观察值的未组合集(每组包含41103个)。我正在拍摄一套完全合并的41103 obs。我看错了吗?如果你有
study\u id
round
变量来识别两个数据集中的观察值,那么这应该相应地将它们合并起来。你能发布你的数据集的样本吗?当然可以,但我不知道如何正确地做。我的第一个问题,你能给我指一个资源,让我知道如何以正确的方式去做吗?在浏览数据时,应该有几乎完全的重叠。我没有格式,值看起来是一样的,我有这段代码,试图处理潜在的空间,很抱歉我想象的格式混乱。数据hivgps2;设置hivgps2;研究id=压缩(研究id);圆形=压缩(圆形);跑数据rccsdata;设置rccsdata;研究id=压缩(研究id);圆形=压缩(圆形);跑天哪,汤姆,它成功了!我需要研究清理代码,以便下次可以进行清理,很多人浏览数据时应该几乎完全重叠。我没有格式,值看起来是一样的,我有这段代码,试图处理潜在的空间,很抱歉我想象的格式混乱。数据hivgps2;设置hivgps2;研究id=压缩(研究id);圆形=压缩(圆形);跑数据rccsdata;设置rccsdata;研究id=压缩(研究id);圆形=压缩(圆形);跑天哪,汤姆,它成功了!我需要学习清理代码,以便下次可以做,非常感谢