在循环中使用列名<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, ...
即 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 = ncol ( 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 = ncol ( 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 等。没有一个工作。
请帮忙。
谢谢,
钱