因此,我正在对 SAS 例程进行一些“逆向工程”——将其带到 SQL 和 Pentaho。
我尝试直接通过它,但我注意到很多冗余过程,所以我开始在思维导图中映射所有内容,以识别所有冗余并在对 SQL 执行任何操作之前对其进行处理。
我偶然发现了这些行:
use table1
read all into A
use table2
read all into B
fieldA = nrow(B);
fieldB = B[,n:fieldA];
fieldC = 2.33*sqrt(A`*fieldB*A);
而且我不知道如何映射这个过程,特别是“fieldB”和 sqrt 中的方程。
谁能帮我一把?
(编辑)好吧,乔真的帮我解决了将军问题……我仍然存在的两个疑问是:
1-“字段B = B [,n:字段A];” 这是什么意思?我的意思是,如果 n 是静态的,我现在会做什么,但是我遇到了流程的另一部分......
use table1;
read all into A;
use table2;
read all into B;
fieldA = ncol(B);
fieldB = ncol(A);
ncurvas = fieldA/fieldB;
N = J(ncurvas+1,1,fieldB);
N[1] = 1;
NCUM = cusum(N)-1;
fieldC = B[,(NCUM[&t]+1):NCUM[&t+1]];
在涉及 fieldC 之前,我都很好。我了解 cusum 所做的一切,但我真的不知道 fieldC 上会发生什么。当我用 &t = 1 检查它时,它显示了一个从 B 开始的 18x18 矩阵,从 B[1,1] 开始 - 但是当我尝试另一个数字,比如 10 时,它从 B 的 col163 开始。
2-我不知道这是否与我至少到目前为止不理解的矩阵变换/乘法有关,但为什么“2.33*sqrt(A`*fieldB*A)”(原始的fieldC ) 返回单个值?它不应该返回一个矩阵吗?