【问题标题】:SAS Macro to extract selected rows from tableSAS宏从表中提取选定的行
【发布时间】:2018-10-06 04:33:04
【问题描述】:

我有一个包含 20 个观察值和 6 个变量 ID、性别、年龄、身高、体重、年份的数据集。除性别变量外,所有都是数字。我想使用 SAS 宏从第五个观察值开始提取 10 个观察值。

我有下面的代码来导入和提取表格中的选定行。

我想在练习中使用宏提取选定的行。请让我知道您对如何使用宏来提取特定观察结果的建议。 感谢您的宝贵时间。

%macro one (a, b, c);
    proc import out=&a
    datafile= "C:\Users\komal\Desktop\&b"
    dbms=&c replace;
    getnames=yes;
    run;
%mend one;

%one (outcsv, Sample.csv, csv);

data test;
    set outcsv;
    if _N_ in (5,6,7,8,9,10,11,12,13,14) then output;
    run;

【问题讨论】:

  • 您的源代码实际上是文本文件吗?像 CSV 或其他分隔文件?
  • 是csv文件。

标签: macros sas


【解决方案1】:

你可以这样做

 %macro one (a, b, c,strtpt,endpt);
    proc import out=&a
    datafile= "C:\Users\komal\Desktop\&b"
    dbms=&c replace;
   getnames=yes;
   run;
  data test;
   set &a;
    if _n_ >= &strtpt and _n_ =< &endpt;
 run;
 %mend one;

%one (outcsv, Sample.csv, csv,5,14);

【讨论】:

    【解决方案2】:

    无需使用 PROC IMPORT 来读取 CSV 文件。特别是如果您已经知道变量的名称/类型。所以这样的事情应该可以工作。

    data want ;
      infile "C:\Users\komal\Desktop\&b" dsd firstobs=5 obs=14 truncover ;
      input ID Gender $ Age Height Weight Year ;
    run;
    

    如果文件有标题行,您可能需要使用 6 到 15。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2019-04-13
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多