在sas中合并具有不同格式的两个数据集

时间:2013-10-30 20:16:34

标签: sas

我有两个sas数据集,如下所述,即Table1和Table2。这两个数据集中有一个名称为Account的公共变量。但我面临的问题是table1帐户和table2帐户中的数据格式不同,如下所示。 我这里有两个问题: 问题1:Table1帐户中有双重引号(“”)和连字符( - ) 问题2:Table2帐户具有不同数字长度的连续数字。 我希望Table2帐户是一个12位数字,前缀所需的零数字,使它们成为12位数字。同时更改表1中显示的帐号格式,以便我可以提取表1中与Table2帐号匹配的帐号。

Table1

   ID    Account              dt
    1   "212-3276-45600"    454
    2   "562-3248-45674"    565
    3   "789-3946-45888"    6767
    4   "382-3776-45612"    766
    5   "232-3446-45674"    767
    6   "038-3276-45674"    77
    7   "232-3246-45674"    88

Table2

Account
562324845674
789394645888
38327645674

1 个答案:

答案 0 :(得分:1)

要使用实际的数据步骤合并,首先必须使变量与type / format / etc匹配。您可以在SQL中执行此操作:

proc sql;
create table want as select t1.account, t1.id, t1.dt
  from table1 t1, table2 t2
  where input(compress(t1.account,,'kd'),BEST12.) = t2.account;
quit;

您无法在数据步骤合并中操作合并变量,但您可以在之前的数据步骤中操作。

data table1_fixed;
set table1;
new_account = input(compress(account,,'kd'),BEST12.);
run;

然后将table2的帐户重命名为同一个帐户。我不建议尝试使t2的帐号适合t1,因为它更复杂。

我在这里做的是使用压缩删除或保留不需要的字符;第三个参数'k'表示'保持'(不删除),'d'表示'数字'。所以它只保留数字并删除其余数字。然后输入将其转换为数字。