我有数据集如下;
data dataset;
input name $ mob5 mob1 mob3 x;
datalines;
a 1 3 5 7
b 2 4 6 8
c 3 5 7 9
d 5 7 9 2
;
run;
我想选择字段名称和那些带有mob(UNKNOW列名称和列数包含mob)。我不知道如何使用retain我不知道有多少列列名包含mob。
proc sql;
create table table1 as
select *
from dataset(keep=name mob:)
quit;
我想要的输出是
name mob1 mob3 mob5
a 3 5 1
b 4 6 2
c 5 7 3
d 7 9 5
答案 0 :(得分:0)
您可以使用字典表(假设您的源数据集称为'数据集'并驻留在工作库中,如果没有,则更改WHERE
子句,但请确保使用大写价值观):
PROC SQL;
SELECT name INTO: mob_cols SEPARATED BY ','
FROM dictionary.columns
WHERE libname = 'WORK' and memname = 'DATASET'
AND upcase(name) LIKE 'MOB%'
ORDER BY name;
QUIT;
此代码将所有'mob'列加载到一个宏变量中,按名称排序并用逗号分隔。
然后您可以在SELECT
的{{1}}子句中使用此宏变量:
PROC SQL