【问题标题】:Merging two SAS datasets by ID按 ID 合并两个 SAS 数据集
【发布时间】:2020-12-10 07:59:50
【问题描述】:

我想合并两个ID相同但总是出错的sas数据集。

我检查了两个数据集中的变量 baseid 都是字符,所以我尝试使用类似这样的相同代码来调整两个数据集的 id 格式

data a; 
   set a; 
   baseidtemp = put(baseid,12);
   drop baseid; 
   rename baseidtemp = baseid; 
run;

之后,我按 baseid 对两个数据集进行了排序。

但我不知道为什么当我使用 proc compare 来比较它们的 ID 时,即使它们的值都相同,所有的 obs 也不相等。

我是这样合并的

data A; 
   merge A (in = a) B; 
   by baseid; 
   if a; 
run;

它们只是无法正确合并。

我对此很困惑,那么有人可以帮助我解决这个问题吗?

提前谢谢你!

【问题讨论】:

  • 在问题中添加一些示例数据,如果可能的话,添加来自Proc CONTENTS的输出
  • 如果它们已经是字符,则无需使用 PUT() 函数。您需要检查导致值不同的前导空格或字符(如制表符)。

标签: merge sas dataset


【解决方案1】:

查看数据内容以了解它们未正确合并的原因会很有帮助。但是你可以试试这个。我一般不会覆盖数据集,所以做了一些新的数据名称

data newa; 
set a;
baseidtemp = baseid;    
drop baseid;
run;
    
proc sort data=newa out=outA;
by baseidtemp;
run;
          
proc sort data=b out=outB;
by baseid;
run;

data new;
merge outA outB (rename = (baseid = baseidtemp));
by baseidtemp;
run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多