在循環中使用列名<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 等。沒有一個工作。
請幫忙。
謝謝,
錢