我有两个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
答案 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'表示'数字'。所以它只保留数字并删除其余数字。然后输入将其转换为数字。