【问题标题】:How to efficiently rename variables using sas如何使用 sas 有效地重命名变量
【发布时间】:2016-04-13 11:14:55
【问题描述】:

我有一个 SAS 数据集 DATA,其中包含 100 个变量。不幸的是,这个数据集不包含每个变量的名称。它只是将变量命名为VAR1 - Var100。我有一个单独的文件,其中列出了每个变量的名称Name(每个单元格一个名称)。我不想一一重命名,所以下面的代码不是一个选项。

data lib.test (rename = (var1= truename1 var2 = truename2 ...) ;
   set lib.test;
run;

按照瑞兹的建议,我尝试实施以下解决方案http://stackoverflow.com/questions/29006915/rename-variable-regardless-of-its-name-in-sas

proc sql;
   /* Write the individual rename assignments */
   select strip(name) || " = " || substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", varnum , 1)

   /* Store them in a macro variable and separate them by spaces */
   into :vars separated by " "

   /* Use a sas dictionary table to find metadata about the dataset */
   from sashelp.vcolumn
   where libname = "LIB"
     and memname = "TEST"
     and 1 <= varnum <= 100;
quit;

proc datasets lib=lib nolist nodetails;
   modify test;
   rename &vars.;
quit;

现在,我不想使用 a,b,c,d ... 重命名我的变量,而是使用 datasetName 上的名称作为新名称。数据集Name 如下所示(如果更容易使用,我可以转置它)。 Name的顺序与数据集lib.test中的变量序列相同。如何更改上面的代码来实现这一点?

Name
name1
anc
sjsjd
mdmd

【问题讨论】:

  • 创建一个包含 old-name 和 new-name 列的数据集,并使用它来生成重命名语句名称对。

标签: sas renaming


【解决方案1】:

您可以将 NAME 数据集转换为同时具有旧名称和新名称,然后使用它来生成重命名对。

data name_pairs;
  set name ;
  old_name = cats('VAR',_n_);
run;

proc sql noprint ;
  select catx('=',old_name,name)
    into :vars separated by ' ' 
    from name_pairs
  ;
quit;

然后您可以在重命名语句中使用宏变量VARS

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多