我想生成一个新的 SAS 数据集,使用表foo
作为输入并与输出数据集中的记录一一对应bar
。我想默认删除变量,foo
但我还要求所有字段都foo
可用(以派生新变量)以及foo
保留一些变量(如果明确指出)。
我目前正在管理一个明确的变量列表,drop=
但它会导致数据集选项声明中的语法冗长且笨拙。*
DATA bar (drop=id data_value2);
set foo;
new_id = id;
data_value1 = data_value1; /* Explicitly included for clarity */
new_derived_data_value = data_value2 * 2; /* etc. */
format new_id $fmt_id.
data_value1 $fmt_dat.
new_derived_data_value $fmt_ddat.
;
RUN;
我想要的输出表应该只有字段data_value1
,new_data
和new_derived_data_value
.
我正在寻找重现相同效果的语法上最简洁的方法:
SELECT
id AS new_id
,data_value1
,data_value2 * 2 AS new_derived_data_value
FROM foo
我如何编写一个DATA
步骤,从输入数据集中删除所有变量,除了我在数据集中明确定义的变量?
* 更新:我可以使用aaa--hhh
类型表示法,但如果变量的顺序随着时间的推移而变化,或者我后来决定我想保留 variable ,那么即使这样也可能很笨拙ddd
。