【发布时间】:2015-09-18 11:09:51
【问题描述】:
我非常想知道我是否可以在不使用 SAS IML 的情况下在 SAS Base 中处理这种情况;
假设我有向量有
a b c d e f
1001 JPN 10,000 50% JPN 2,000
1001 EUR 12,648 100% EUR 3,000
1001 USD 15,997 50% USD 5,000
1001 JPN 20,233 20% JPN 8,000
1001 EUR 25,591 20% EUR 9,000
1001 USD 32,368 50% USD 4,000
1002 JPN 28,393 50% JPN 6,000
1002 EUR 24,906 100% EUR 4,000
1002 USD 21,847 50% USD 8,000
1002 TRY 19,164 20% JPN 6,000
1002 EUR 16,811 50% EUR 15,000
1002 USD 14,746 100% USD 52,000
1003 USD 10,000 50% XVN 8,000
%macro;
% let i = 1;
data want;
set have;
%do %while a[&i]=a[eval(&i+1)] ;
b = &i;
&i=eval(&i+1);
%end
%mend
我想做的是让 b=e 的 a 取 max(c) 和 max(f) 的差,并将这个差乘以 d,然后对每个不同的 a 求和这些结果。这将是迭代的。我在这里组成的表格只是案例的一个小代表。
谢谢
【问题讨论】:
-
你能用文字解释你想要什么输出吗?看起来你想先。处理,但如果不了解您想要的输出,就很难给出任何建议。
-
我只想根据 R 或 Matlab 等列中元素的观察数量来构建循环,但我无法在 SAS Base 中做到这一点。我想知道这是否可能。
-
所以基本数据步骤是基于输入数据步骤中的观察的循环。你到底想循环什么?
-
我只想知道如何通过在 SAS 中使用索引号来构建循环,或者是否可以像在 R 或 Matlab 中一样使用索引号?
-
根据上面的示例数据发布预期输出。
标签: loops sas do-while base sas-iml