2017-08-02 228 views
-1

在SAS我试图找出如何获得输出(结果或实际数据集),显示列名称,var长度和最大长度(当然会重复每个obs与该列名称)。SAS:我如何输出一个显示列名,最大长度和该列定义长度的表?

+1

你到目前为止尝试过什么? SO不是代码编写服务,请尝试自己解决问题并解释您遇到的问题。示例数据和预期输出也有助于解释您的问题。 – Reeza

+0

https://stackoverflow.com/help/how-to-ask – Reeza

+0

另请参阅SASHELP.VCOLUMNS表以获取信息。 – Reeza

回答

0

要找到数据集中EVERY变量的最大长度,您可能需要转置数据或生成代码。

如果你有每个观察的唯一标识符,那么你可以先转置数据,然后找到最大长度。

proc transpose data=have out=tall ; 
    by rowid ; 
    var _character_; 
run; 
proc sql ; 
    create table want as 
    select _name_,max(length(col1)) as max_length 
    from tall 
    group by 1 
    ; 
quit; 

或生成的代码,找到最大长度在一个单一的观察,然后转置。所以如果你的变量是GENDER和RACE,你可以运行它。

proc sql ; 
    create table wide as 
    select max(length(GENDER)) as GENDER 
     , max(length(RACE)) as RACE 
    from have 
    ; 
quit; 
proc transpose data=wide out=want; 
run; 

你可以使用原始数据PROC内容的信息,生成在SELECT语句中的一系列MAX(LENGTH(var)) as var表达式。