【问题标题】:Extracting specific columns fullfulling a certain criteria from a data set in SAS从SAS中的数据集中提取满足特定条件的特定列
【发布时间】:2014-09-15 22:53:42
【问题描述】:

这里是 SAS 的新手。

我有一个包含大量变量的数据集。我想提取所有变量,例如名称中包含字符串“GRP”的变量,并从这些变量中创建一个新数据集。

编辑:我不知道任何变量名称,因为数据集很大。

【问题讨论】:

  • 向我们展示您已经尝试过的内容、示例代码等。Stackoverflow 不是按需代码服务。
  • 我不是在寻找按需代码服务,谢谢!我的问题不要求代码,所以你的假设是错误的。我正在寻找某种功能来帮助我完成这项任务。例如,在 R 中使用 names() 和 grep() 可以轻松解决此任务。但正如我所写的那样,我是 SAS 新手。

标签: regex sas


【解决方案1】:

您可以先将感兴趣的变量存储到宏变量中,然后在保留列表中使用它们。以数据集名称work.have为例,创建work.want:

/* note the use of use UPPERCASE */
proc sql noprint;
  select name into :varlist separated by ' '
  from dictionary.columns
  where libname='WORK'
    and memname='HAVE'
    and upper(name) contains 'GRP'
  ;
quit;

/* keep only required variables */
data want;
  set have(keep=&varlist);
run;

【讨论】:

  • 这假设我知道变量名的名称。正如我所写,我有大量的变量,我对命名每个我感兴趣的变量不感兴趣。
  • Amir 已根据您的 OP 对您的问题给出了充分且有效的答案。
  • 如果我误解了,我很抱歉。我不认为我理解第一个 proq sql 步骤,以及它的实际作用。
  • @ErosRam proc sql 创建一个名为 varlist 的宏变量,其中包含来自 work.have 的变量,这些变量在变量名中包含 GRP。这是通过查找 SAS 用来保存 SAS 系统中数据集列的信息的 dictionary.columns 来完成的,因此您不需要知道变量的名称或数据集中有多少变量有兴趣。然后在keep中使用varlist。见Accessing SAS System Information By Using DICTIONARY Tables
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多