首页 > 解决方案 > 检测数据中的单位差异 (SAS)

问题描述

我有两组财务数据,由于单位错误,它们往往包含差异,例如,一个数据集中的 10000 美元可能是另一个数据集中的 1000 美元。

我正在尝试编写检查此类差异的代码,但我能想到的唯一方法是将两个变量分开,看看差异是否在 0.001、0.01、0.1、10、100 等的表中,但它会很难抓住所有的差异。

有没有更聪明的方法来做到这一点?

标签: sasdifferencedata-quality

解决方案


使用proc compare. 确保两个数据集按行或特定组以相同的顺序排序。根据需要使用该by语句。有关选项的更多信息可以在文档中找到。

示例 - 将修改后的cars数据集与sashelp.cars

data cars_modified;
    set sashelp.cars;

    if(mod(_N_, 2) = 0) then msrp = msrp - 100;
run;

proc compare base    = sashelp.cars 
             compare = cars_modified 
             out     = out_differences 
             outnoequal 
             outdif
             noprint;
    var msrp;
run;

仅在 中输出具有差异的观测值out_differences

_TYPE_  _OBS_   MSRP
DIF     2      $-100
DIF     4      $-100
DIF     6      $-100
DIF     8      $-100
DIF     10     $-100
...

推荐阅读