SAS到R代码第一个和最后一个功能

时间:2014-02-10 18:31:21

标签: r sas output

我对SAS比较陌生,正致力于将代码从SAS转换为R. 我遇到了这个让我有点困惑的片段。

data A ; set B;
by date id Units;
retain Total;
if first.id and last.id then do;
Total=Units;
output; 
end;
else do ;
if  first.id then Total=Units;
else Total=sum(Total,Units);
if last.id then output;
end;
run;

如果我对这段代码的理解是正确的,那么这段代码就会输出一个名为A的数据集,该数据集是(在SQL术语中)所有第一次和最后一次出现的id以及最后一次出现的id的联合。我对吗?那么By语句的目的是什么?我尝试过SAS帮助,但我仍感到困惑。

提前致谢!

1 个答案:

答案 0 :(得分:3)

by语句负责创建基于此操作的lastfirst变量。没有它,你就无法访问这些变量。

此代码的作用是对变量求和,类似于

proc sql;
select id, sum(units) as total
from b
group by id;
quit;

基本上,如果你在一行(该ID为一行),则总数=单位;否则,在第一行上设置total = units,然后为每个附加行添加单位为total,然后在该ID的最后一行上输出一行总数。