Macros SAS宏从表中提取选定行

Macros SAS宏从表中提取选定行,macros,sas,Macros,Sas,我有一个数据集,有20个观察值和6个变量ID、性别、年龄、身高、体重、年份。除性别变量外,所有变量均为数字。我想使用SAS宏从第五次观察开始提取10次观察 我有下面的代码从表中导入和提取所选行 作为练习的一部分,我想使用宏提取选定的行。请让我知道你的建议如何使用宏来提取具体的观察结果。 谢谢你抽出时间 %macro one (a, b, c); proc import out=&a datafile= "C:\Users\komal\Desktop\&b"

我有一个数据集,有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;

你可以这样做

 %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);
%宏一(a、b、c、strtpt、endpt);
proc导入输出=&a
datafile=“C:\Users\komal\Desktop\&b”
dbms=&c替换;
getnames=yes;
跑
数据测试;
set&a;
如果<&strtpt和<&endpt;
跑
%修补一个;
%一个(outcsv,Sample.csv,csv,5,14);

无需使用PROC导入来读取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。您的源文件实际上是文本文件吗?像CSV或其他分隔文件?它是CSV文件。