我正在努力将SAS代码转换为R,因为我对SAS比较新,所以我无法理解以下代码片段 -
proc expand data=A out=B;
by number beg_date;
id date;
convert alpha1=calpha1/transformout=(+1 cuprod -1);
convert alpha2=calpha2/transformout=(+1 cuprod -1);
convert alpha3=calpha3/transformout=(+1 cuprod -1);
run;
我理解expand用于扩展时间序列数据,例如从每月到四季,或者合同。但是什么是by和id语句? 从引用SAS支持来看,我认为BY语句用于指定变量,以便为该组变量计算累积产品。至于ID声明,我理解这是识别观察结果的关键。任何人都可以告诉我,我的理解是否正确?为此,我是否在R中使用了transform命令? 我没有SAS许可证,所以我不能在样本数据上尝试这一点并理解输出。同样,我没有原始数据集可供使用。
答案 0 :(得分:2)
从你的代码片段来看,似乎这个proc expand
将创建三个变量calpha1,calpha2和calpha3。 cuprod
是proc expand
中要输出累积产品的选项之一。因此,这将在每个beg_date组中找到所有alpha1,alpha2和alpha3的乘积,这些组的排序方式与by语句类似。我相信在使用by语句proc sort
之前应该有一个proc expand
。
关于ID语句,原始作者似乎不想使用proc expand
的默认时间设置。因此,通过在id语句中指定date
变量,计算将基于date
给出的时间点。