在循环中使用列名<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />尊敬的 JMP 专家:
我有一个包含许多重复列的表:
A_X1_Y1, A_X1_Y2, ....A_X1_Y99, A_X2_Y1, A_X2_Y99, .....
B_X1_Y1, B_X1_Y2, ....B_X1_Y99, B_X2_Y1, B_X2_Y99, .....
IE Xi, i=1, 99, Yj, j=1,20,
如果我想添加多列:
C_Xi_Yj = A_Xi_Yj - B_Xi_Yj
C_?,哪里是C_?= A_?- B_?
我可以将循环与 Xi、Yj 一起使用,还是可以使用更抽象的东西,例如:C_?= A_?-B_?
谢谢,
钱
回复:在循环中使用列名我需要一段时间才能理解这一点。这是一个很酷的想法。
谢谢!
-------------------------------------------------- -------------------------------------------------- ---------------------
对于非常大的表,基于矩阵运算的解决方案可能更有效。
一个例子;
// 脚本假设列的顺序是正确的:首先是所有 A,然后是所有 B 的顺序相同
//dt<<按名称重新排序;
n =上级( dt ) ;
AB = dt <<得到矩阵;
C = AB [ 0 , 1 :: n / 2 ] —— AB [ 0 , n / 2 + 1 :: n ] ;
dt <<设置矩阵( C ) ;
为了(一世= 1 ,一世<= 3 ,一世++,
为了( j = 1 , j <= 4 , j ++,
上校=柱子( n + 1 ) ;上校<<设置名称( “C_X” ||字符(一世) || “_Y” ||字符( j )) ; n ++
)) ;
回复:在循环中使用列名谢谢!
这个 evalinsert 真的很有帮助。现在代码正在运行!
此致,
钱
回复:在循环中使用列名对于非常大的表,基于矩阵运算的解决方案可能更有效。
一个例子;
// 脚本假设列的顺序是正确的:首先是所有 A,然后是所有 B 的顺序相同
//dt<<按名称重新排序;
n =上级( dt ) ;
AB = dt <<得到矩阵;
C = AB [ 0 , 1 :: n / 2 ] —— AB [ 0 , n / 2 + 1 :: n ] ;
dt <<设置矩阵( C ) ;
为了(一世= 1 ,一世<= 3 ,一世++,
为了( j = 1 , j <= 4 , j ++,
上校=柱子( n + 1 ) ;上校<<设置名称( “C_X” ||字符(一世) || “_Y” ||字符( j )) ; n ++
)) ;
回复:在循环中使用列名查看函数 Evalinsert()。当指定依赖于例如计数器的公式时,它会很有用。
公式列示例:
// 制作示例表
dt =新表( “测试” ) ;
为了(一世= 1 ,一世<= 3 ,一世++,
为了( j = 1 , j <= 4 , j ++,
dt <<新栏目( “斧头” ||字符(一世) || “_Y” ||字符( j ) ,数字,价值观([ 5 , 6 ]))
)) ;
为了(一世= 1 ,一世<= 3 ,一世++,
为了( j = 1 , j <= 4 , j ++,
dt <<新栏目( “B_X” ||字符(一世) || “_Y” ||字符( j ) ,数字,价值观([ 2 , 2 ]))
)) ;
// 添加公式列
F =表达式(解析(评估插入( “斧头” || "^char(i)^" || “_Y” || "^char(j)^-B_X" || "^char(i)^" || “_Y” || "^char(j)^" ))) ;
为了(一世= 1 ,一世<= 3 ,一世++,
为了( j = 1 , j <= 4 , j ++,
dt <<新栏目( “C_X” ||字符(一世) || “_Y” ||字符( j ) ,数字,公式(评估( F )))
)) ;
回复:在循环中使用列名这是我失败的试验,请有人帮忙:
对于 ( i = 1, i <= 3, i++,
对于 ( j = 1, j <=4, j++,
col_new_name="C_"||char(i)||"_"||char(j);
数据表 (dt_out) << 添加多列 (col_new_name, 1, "Numeric");
解析 (col_new_name) << 公式 ( ascolumn (parse("A_"||char(i)||"_"||char(j)) -
ascolumn (parse("B_"||char(i)||"_"||char(j)) );
);
);
具有更正名称的列添加到我的表中,但公式只是字面意思:
parse("A_"||char(i)||"_"||char(j))-parse("B_"||char(i)||"_"||char(j)
我也试过 eval(parse (*)),没有 'parse',没有 ascolumn 等。没有人在工作。
请帮忙。
谢谢,
钱