![](/img/trans.png)
[英]How to fill column using values in 2 other columns in PROC SQL / SAS code in SAS Enterprise Guide?
[英]How to select only char variables with PROC SQL in SAS Enterprise Guide?
我有以下代码:
PROC SQL INOBS=10 OUTOBS=10;
CREATE TABLE WORK.FREQUENCY_&ColumnName AS
SELECT t1.&ColumnName,
(COUNT(t1.&ColumnName)) AS COUNT_of_&ColumnName
FROM &libname..&tblname t1
GROUP BY t1.&ColumnName
ORDER BY COUNT_of_&ColumnName DESC;
此代码有效,但使用此代码我选择了所有类型的变量,但是只有当变量是 CHAR 时,我才想 select。
有没有办法用一个简单的 where clausule 创建这个条件? 还是我需要创建一个“如果条件”? 如果是,我该如何创建它?
谢谢你!
我现在没有可用的 SAS 安装,但此代码应该可以工作
data _null_;
/*
The relevant columns are probably named differently;
Check the table sashelp.vcolumn what the values in COLTYPE for character variables actually are
Don't know exactly out of my head
*/
set sashelp.vcolumn(where=(MEMNAME eq 'MY_TABLE' and COLTYPE in ('CHAR', 'VARCHAR'))) end=eof;
attrib COLNAMES format=$1000.;
retain COLNAMES;
/*
the following two lines concatenate all extracted column names;
choose one of the two
*/
/*concatenate all variable names in a string using || operator*/
COLNAMES = compbl(COLNAMES) || ', ' || compbl(COLNAME);
/*or via function catx*/
colnames=catx(', ',colnames,colname);
/*define a macro variable to hold all determined columns*/
if eof then do;
call symput('M_COLNAMES', compbl(COLNAMES));
end;
run;
/*print all found columns*/
%put Character columns: &M_COLNAMES.;
然后,您可以在 select 语句中使用宏变量 M_COLNAMES。 这应该让您了解如何做到这一点。
不要犹豫,提出进一步的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.