最有效的方法来做SAS中列之间的差异
The most efficient way to do the differences between the columns in SAS
我有一个如下所示的 SAS 数据集。我想将第一列值用作被减数,即第 2 列 - 第 1 列、第 3 列 - 第 1 列、第 4 列 - 第 1 列......在 SAS 中执行此差异的最有效方法是什么?使用数组还是循环?
hotelID expense1 expense2 expense3 expense4 expense5
1 41241 56234 45124 12551 74245
2 31232 45213 51411 67432 23523
3 75463 14352 74214 51541 25236
4 95324 21451 73423 15215 56432
5 12445 64622 12156 52442 52351
6 43542 24141 62532 63255 78454
7 12625 14525 45235 15351 15364
像下面那样使用 arrays
data _NULL_;
set test;
array all{*} expense2-expense5;
array diff{*} diff_exp2-diff_exp5;
do i=1 to dim(all);
diff[i]= expense1 - all{i};
end;
put _ALL_;
run;
我有一个如下所示的 SAS 数据集。我想将第一列值用作被减数,即第 2 列 - 第 1 列、第 3 列 - 第 1 列、第 4 列 - 第 1 列......在 SAS 中执行此差异的最有效方法是什么?使用数组还是循环?
hotelID expense1 expense2 expense3 expense4 expense5
1 41241 56234 45124 12551 74245
2 31232 45213 51411 67432 23523
3 75463 14352 74214 51541 25236
4 95324 21451 73423 15215 56432
5 12445 64622 12156 52442 52351
6 43542 24141 62532 63255 78454
7 12625 14525 45235 15351 15364
像下面那样使用 arrays
data _NULL_;
set test;
array all{*} expense2-expense5;
array diff{*} diff_exp2-diff_exp5;
do i=1 to dim(all);
diff[i]= expense1 - all{i};
end;
put _ALL_;
run;