【问题标题】:Using a set statement to select many files with a pattern使用 set 语句选择多个具有模式的文件
【发布时间】:2018-11-27 20:03:04
【问题描述】:

我正在尝试加载大量数据集,这些数据集的模式与其在 set 语句中的命名相似,即

data output;
     set &filenames. ; 

我在其他问题中看到了一种使用proc sql 语句创建具有所有名称的宏的方法,但我似乎无法弄清楚如何做到这一点。我想知道是否有人可以帮助我构建这个proc sql 代码。命名模式类似于abcXX03,其中abc 很常见,XX 正在改变(即它可以是XX XY or XZ),但我只想选择具有abcXX03 模式的那些。 我试过类似的东西

proc sql;
 select memnames into :names
    separated by " " 
       from dictionary.tables
         where libname eq "LIBNAME" and 
         memname like "%XX03"
quit;

基于之前的答案。

【问题讨论】:

  • 很确定这是重复的。
  • 什么是命名模式?
  • 模式类似于 abcXX03、abcXY03、abcXZ03(虽然有更多组合),我只想选择 abcXX03。
  • 这不是一个清晰的模式。请更详细地解释。 DCFXX03 是有效的数据集名称,还是 ABCXX05?
  • 希望这更清楚。我遇到的问题是每个文件名的共同部分是开头abc。结尾在0305 之间变化,中间有50 个潜在值,所以我不能使用冒号。所以我想要的文件名类似于 abc**03 ,其中 ** 正在发生变化,但也有像 abc**05 这样的文件我不想要。在这种情况下,我想选择具有此abc**03 模式的所有文件。

标签: sas proc-sql datastep


【解决方案1】:

使用冒号快捷方式。这会将所有数据集追加到同一个文件中

data want;
set abc: ;
run;

【讨论】:

  • 我明白了,我忘了提这个,每个文件的 XX 模式并不相同,我只希望模式是 XX 而不是 XY。
  • 那你为什么不能把它改成set abcXX: ;呢?只要前缀是唯一可识别的,就应该可以工作。如果不是,你又不这么说,我不可能知道。
猜你喜欢
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多