SAS宏从表中提取选定的行

时间:2018-04-25 16:00:02

标签: macros sas

我有一个包含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;

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

 %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);

答案 1 :(得分:2)

无需使用PROC IMPORT从CSV文件中读取数据。特别是如果您已经知道变量的名称/类型。所以这样的事情应该有效。

Float[] arr = {(float)0.2, (float)4.5};
Float[] brr = {new Float(0.2), new Float(4.5)};
float x = 0.2f;
float y = (float)4.5;
System.out.println(Arrays.asList(arr).indexOf(x));
System.out.println(Arrays.asList(arr).indexOf(y));
System.out.println(Arrays.asList(brr).indexOf(x));
System.out.println(Arrays.asList(brr).indexOf(y));

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