【发布时间】:2015-03-07 19:39:56
【问题描述】:
我不是 SaS 的火箭科学家,但我想尝试在 SaS 中和在 Java 中做同样的事情。
假设我有一个 SaS 数据集,我想逐条检查每条记录,然后将迭代中收集的值与最终数字进行比较。
在 Java 中,它将循环遍历一个数组,在这种情况下,该数组与来自 SaS 数据集的单个列的所有数据相同。
示例如下:
我有一个帐户余额列表,我想检查迭代中的当前余额是否高于之前存储的先前最大值,如果是,则存储它,并继续循环,直到我存储最高的帐户平衡。
我知道这可以使用 SQL max 来完成,但我想知道如何迭代 SaS 数据集,但我也会感谢任何有效的 SQL 答案。
SaS 数据集如下所示。
acct_number owner_name acct_balance
0123456789 name1 12000
1234567890 name2 16000
2345678901 name3 14000
但我只对acct_balance 专栏感兴趣。
作为一个代码示例,在 Java 中应该是这样的。
int[] acct_balances = new int[8];
int[0] = 10000;
int[1] = 12000;
int[2] = 11000;
int[3] = 16000;
int[4] = 14000;
int[5] = 5000;
int[6] = 16000;
int[7] = 15000;
int max_balance = 0;
int max_balance_position = 0;
int iteration_position = 0;
int maximum_position = acct_balances.length;
do {
if (acct_balances[iteration_position] > max_balance) {
max_balance = acct_balances[iteration_position];
max_balance_position = iteration_position;
}
iteration_position ++;
} while(iteration_position < maximum_position);
最后,输出将是max_balance = 16000 和max_balance_position = 3
这段代码遍历数组中的每一个值,但是如何将这段代码翻译成 SaS?谁能帮我?非常感谢。
【问题讨论】:
-
可以添加SAS数据集的形式吗?没有这个就很难回答了。
-
SAS 通常使用全部大写字母书写(与 SaaS 不同)。每次看到这种混合情况时,我的大脑都想吐出来;-)
-
SAS 仅以大写形式正确拼写 - 而不仅仅是通常。它不再是首字母缩略词,即使是 A 也代表一个真实的单词(分析),而不是和。