表达式和名称表达式你好,
我正在分析大量数据,35 万行。
对于每一行,代码运行一个循环来计算表 1 和表 2 之间的唯一增量,然后将该增量添加到主数据表的列中。 下面的代码中有一些不正确的地方。 有什么建议吗?
Names Default To Here( 1 );
dt1 = Data Table( "dt_ref" );
dt2 = Data Table( "Data table" );
digt = 5;
itsel1 = {"Currents A", "Currents A2", "Currents A3", "Currents A4", "Currents A5"}; //List of columns to align.<BR />
//// Loop to calculate the delta between the dt1 and dt2 and the add the delta to the column of dt2 from the itsel1 list
dt2 << Add Row( 1, At Start );
dt2 << Begin Data Update;
For Each( {element, idx}, itsel1,
Eval(
Eval Expr(
Column( dt2, element ) << Set Each Value(
Expr(
Name Expr( Column( dt2, element ) )
),
Expr(
Num(
Substr( Char( Column( dt1, "Median" )[dt1 << get rows where( :Tests == element )] - Column( dt2, element ) ), 1, digt + 1 )
) + Column( dt2, element )
)
)
)
)
);
dt2 << Delete Row( 1 );
dt2 << End Data Update;
谢谢,
杰基
自动化和脚本编写回复:Expr 和名称 Expr我不确定您在这里执行什么类型的计算
Num(Substr(Char(Column(dt1, "Median")[dt1 << get rows where(:Tests == element)] - Column(dt2, element)), 1, digt + 1)) + Column(dt2, element)
但这样的事情可能会帮助你
Names Default To Here(1);
dt1 = Open("$DOWNLOADS/dt_ref.jmp");
dt2 = Open("$DOWNLOADS/Data table.jmp");
digt = 5;
itsel1 = {"Currents A", "Currents A2", "Currents A3", "Currents A4", "Currents A5"}; //List of columns to align.
dt2_colnames = dt2 << Get Column Names("String");
//// Loop to calculate the delta between the dt1 and dt2 and the add the delta to the column of dt2 from the itsel1 list
For Each({colname}, itsel1,
dt2_col_idx = Contains(dt2_colnames, colname);
If(dt2_col_idx == 0,
Print("Skipped column: " || colname);
continue(); // skip this column
);
dt1_row_idx = Loc(dt1[0, "Tests"], colname);
If(N Items(dt1_row_idx) == 0,
Print("Skipped row: " || colname);
continue();
,
dt1_row_idx = dt1_row_idx[1];
);
dt2[0, dt2_col_idx] = dt2[0, dt2_col_idx] - dt1[dt1_row_idx, "Median"];
);回复:Expr 和名称 Expr所以我试图将 dt2 中的数据与 dt1 中 Test 的中值对齐
因此,当前 A1 的中值是 5.408,因此减去 dt2 中当前 A1 的每一行,并将其加回 dt2 中当前 A1 的行值
5.408 - 2.4963333333 = 2.912
2.912 + 2.496333333 = 5.40。 我避免使用传统的 for 循环,因为我有一个包含 1M 行的巨大数据集,Expr 会更快

回复:Expr 和名称 Expr如果你不对你的值进行四舍五入,你最终不会得到中值吗?
x = 中位数,
y = 行值,
z = 结果
x - y = z
z + y = x?
回复:Expr 和名称 Expr@jthi这是正确的,但我想将“z”四舍五入到小数点后两位,然后将其加回 y。 这样做的原因是“用主数据抵消测试仪数据”