"dictionary.columns"的典型运用

 

1.Create a macro variable that contains a list of all variables that exist in a SAS dataset

/* Sample data */
data one;                                                                                                                              
  input x y;                                                                                                                           
datalines;                                                                                                                             
1 2                                                                                                                                    
;

/*data步宏*/
%macro lst(dsn);                                                                                                                       
  %local dsid cnt rc;
  %global x;                                                                                                                
  %let x=;                                                                                                                             

  /* Open the data set */                                                                                                              
  %let dsid=%sysfunc(open(&dsn));                                                                                                      

  /* The variable CNT will contain the number of variables that are in the */                                                           
 /* data set that is passed in.                                           */                                                           
  %let cnt=%sysfunc(attrn(&dsid,nvars));                                                                                               

  /* Create a macro variable that contains all dataset variables */                                                                    
   %do i = 1 %to &cnt;                                                                                                                 
    %let x=&x %sysfunc(varname(&dsid,&i));                                                                                                         
   %end;                                                                                                                               
                                                                                                                                       
  /* Close the data set */                                                                                                             
  %let rc=%sysfunc(close(&dsid));                                                                                                                                        
%mend lst;                                                                                                                             
                                                                                                                                       
  /* Pass in the name of the data set */                                                                                               
%lst(one)                                                                                                                              
                                                                                                                                       
%put macro variable x = &x; 


/*proc sql宏变量,dictionary.columns*/
proc sql noprint;
     select distinct name
     into : varlist separated by ' '
     from dictionary.columns
     where libname='WORK' and memname='ONE';
quit;  

2 Dynamically rename multiple variables in a SAS data set

/* Create a sample data set.  Note the naming pattern of COL1-COL5 is */                                                 
/* incomplete.  Since COL4 is missing, a numbered range list can not   */                                                             
/* used for this rename.                                               */                                                              
                                                                                                                                       
data a;                                                                                                                                
  col1=1;                                                                                                                              
  col2=2;                                                                                                                              
  col3=3;                                                                                                                              
  col5=5;                                                                                                                              
  x=123;                                                                                                                               
run;                                                                                                                                   
                                                                                                                                       
/* Use SQL to create the macro variable VARLIST by retrieving the   */                                                                
/* variable names from DICTIONARY.COLUMNS.  Verify the LIBNAME and  */                                           

/* MEMNAME values match your existing data set.  Note the values    */                                                             
/* must be specified in upper case.  'NEW' will replace 'COL' for   */                                                                 
/* the appropriate variables.                                       */ 

proc sql noprint;                                                                                                                      
  select trim(name)||'=NEW'||substr(name,4)                                                                                            
  into :varlist separated by ' '                                                                                                       
  from DICTIONARY.COLUMNS                                                                                                              
  WHERE LIBNAME EQ "WORK" and MEMNAME EQ "A"                                                                                           
  and upcase(name) like 'COL%';                                                                                                                
quit;

/* Use PROC DATASETS to do the rename. Again, verify the libref and  */                                                          
/* member name match your data set.                                  */                                                                
                                                                                                                                       
proc datasets library=work nolist;                                                                                                     
  modify a;                                                                                                                            
  rename &varlist;                                                                                                                     
quit;                                                                                                                                  
                                                                                                                                       
/* Confirm changes with a PROC CONTENTS */                                                                                             
                                                                                                                                       
proc contents data=a;                                                                                                                  
run;

3 Placing a list of values into a series of macro variables

%macro varlist(lib,dsn);

   proc sql noprint;

  select distinct name

     into :varname1-:varname999

       from dictionary.columns

          where(libname=upcase("&lib") &

                   memname=upcase("&DSN"));

quit;

%do i=1 %to &sqlobs;
    %put &i &&varname&i;
%end;
%mend varlist

 

资料来源

http://support.sas.com/kb/25/083.html

http://support.sas.com/kb/26/009.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF DataGrid是一种用于显示数据的控件,而DataGrid.Columns则是DataGrid中的列集合。你可以通过设置DataGrid.Columns的Background属性来改变整个列的背景颜色。 在WPF中,你可以使用多种方式来设置DataGrid.Columns的Background属性,包括使用静态资源、绑定属性、使用样式等。以下是一些示例代码: 1. 使用静态资源设置DataGrid.Columns的Background属性: ``` <DataGrid> <DataGrid.Columns> <DataGridTextColumn Header="Column 1" Binding="{Binding Column1}"> <DataGridTextColumn.HeaderStyle> <Style TargetType="DataGridColumnHeader"> <Setter Property="Background" Value="{StaticResource MyBrush}" /> </Style> </DataGridTextColumn.HeaderStyle> </DataGridTextColumn> </DataGrid.Columns> </DataGrid> ``` 2. 使用绑定属性设置DataGrid.Columns的Background属性: ``` <DataGrid> <DataGrid.Columns> <DataGridTextColumn Header="Column 1" Binding="{Binding Column1}"> <DataGridTextColumn.HeaderStyle> <Style TargetType="DataGridColumnHeader"> <Setter Property="Background" Value="{Binding DataContext.Column1HeaderBackground, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" /> </Style> </DataGridTextColumn.HeaderStyle> </DataGridTextColumn> </DataGrid.Columns> </DataGrid> ``` 3. 使用样式设置DataGrid.Columns的Background属性: ``` <DataGrid> <DataGrid.Resources> <Style TargetType="DataGridColumnHeader"> <Setter Property="Background" Value="LightGray" /> </Style> </DataGrid.Resources> <DataGrid.Columns> <DataGridTextColumn Header="Column 1" Binding="{Binding Column1}" /> </DataGrid.Columns> </DataGrid> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值