Sql 如何迭代SAS中的列表,并用导入的映射转换/替换每个片段?
我是SAS的新手,不知道如何用导入SAS的翻译数据集(Have_2)替换数据集Have_1的每个部分Sql 如何迭代SAS中的列表,并用导入的映射转换/替换每个片段?,sql,dictionary,sas,mapping,Sql,Dictionary,Sas,Mapping,我是SAS的新手,不知道如何用导入SAS的翻译数据集(Have_2)替换数据集Have_1的每个部分 Data Have_1 1111 1234 2222 2938 3849 1234 9388 ... 2222 2222 Data Have_2 1111 a 1234 b 2222 c 2938 d 3849 e ... 9388 f Data Want a b c d
Data Have_1
1111 1234 2222
2938 3849
1234 9388
...
2222 2222
Data Have_2
1111 a
1234 b
2222 c
2938 d
3849 e
...
9388 f
Data Want
a b c
d e
b f
c c
无论您是否要替换它们,这就是SAS中的
proc format
所做的-将一个值映射到另一个值
以下是您可以如何做到这一点。请注意,您不能重复使用原始的3个变量(因为它们是数字的),但如果您确实需要相同的变量名,您可以执行重命名
和删除
组合
直接使用格式
语句也可以在视觉上获得相同的结果(但基本值仍然是数字值)
无论您是否要替换它们,这就是SAS中的
proc format
所做的-将一个值映射到另一个值
以下是您可以如何做到这一点。请注意,您不能重复使用原始的3个变量(因为它们是数字的),但如果您确实需要相同的变量名,您可以执行重命名
和删除
组合
直接使用格式
语句也可以在视觉上获得相同的结果(但基本值仍然是数字值)
散列方法:
data want;
if 0 then set have_2;
if _n_=1 then do;
declare hash h(dataset:'have_2');
h.definekey('numval');
h.definedata('charval');
h.definedone();
end;
set have_1;
array var var:;
array new_var (3) $;
do i=1 to dim(var);
if h.find(key:var(i))=0 then new_var(i)=charval;
end;
keep new_var:;
run;
散列方法:
data want;
if 0 then set have_2;
if _n_=1 then do;
declare hash h(dataset:'have_2');
h.definekey('numval');
h.definedata('charval');
h.definedone();
end;
set have_1;
array var var:;
array new_var (3) $;
do i=1 to dim(var);
if h.find(key:var(i))=0 then new_var(i)=charval;
end;
keep new_var:;
run;
你真的需要转换它们吗?或者你只是想让他们打印出更加用户友好的描述?如果是后者,那么这看起来是一个完美的格式应用程序。你真的需要转换它们吗?或者你只是想让他们打印出更加用户友好的描述?如果是后者,那么这看起来是一个完美的格式应用程序。