如何查找給定列中任意兩列具有相同值的行?例如這裡的第1——第3列:
dt = Open( "$SAMPLE_DATA\Missing Data Pattern.jmp" );
dt<<NEW column=""></NEW>

謝謝!
自動化和腳本編寫回复:如何查找給定列中任意兩列具有相同值的行?感謝您的幫助!

回复:如何查找給定列中任意兩列具有相同值的行?@lwx228 , @tx尼爾森,
就是圖個好玩兒...
- 添加@lwx228示例數據到@tx尼爾森,見附件JMP數據表JN_AdjacentPlus.jmp
- 下面的腳本嵌入在表中。 該腳本名為“查找具有匹配相鄰列的任何行”,實際上匹配的值不為空。
- 注意#1:此腳本將採用任意數量的列。 數據表中的列不需要相鄰,只需更改xmat定義中的列規範即可。
- 注意 #2:Abs(x1-x2) 確保相鄰匹配返回零並且所有其他值都 > 0。
- 注意#3:Vmin() 查找矩陣每列的最小值。 因此, transpose( Vmin(transpose(Abs(x1-x2))) ) 返回 Abs(x1-x2) 的行最小值
- 注意#4:Loc( vec ==0 ) 返回值為 0 的行號。
- 注意#5:吉姆的解決方案找到任何匹配項,該腳本找到相鄰的匹配項。
Names Default to Here(1);
dt = current data table();
xmat = dt[0,1::4];
nc = ncol(xmat);
x1 = xmat[0,1::nc-1];
x2 = xmat[0,2::nc];
idx = Loc( Transpose(Vmin(Transpose(abs(x1-x2)))) == 0);
dt << New Column("t1", numeric, continuous);
:t1[idx]=1;
回复:如何查找給定列中任意兩列具有相同值的行?謝謝吉姆!
Mode( dt[i, 1::3] || [-999] ) == -999
回复:如何查找給定列中任意兩列具有相同值的行?這是對此問題的不同看法。我正在使用 Mode() 函數來查看模式是什麼。如果存在實際模式,則意味著至少有 2 個值匹配,因此列 t1 將設置為 1。請參閱 JSL 註釋以獲得更完整的說明。
我附上了用於測試的數據表。
Names Default To Here( 10 );
dt = Current Data Table();
New Column( "t1" );
For( i = 1, i <= N Rows( dt ), i++,
// add a value to the matrix that is less
// than any value in the data table. If
// the mode() function does not find an
// actual mode, it returns the smallest
// value from the matrix, so if that is
// the value returned, you know there
// are not at least 2 values that equal
// each other in the columns
If( Mode( dt[i, 0] || [-999] ) == -999,
dt:t1[i] = .,
dt:t1[i] = 1
)
);
回复:如何查找給定列中任意兩列具有相同值的行?
dt = Current Data Table();
x = dt << Get As Matrix();
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= 2, j++,
If( x[i, j] == x[i, j + 1],
x[i, 5] = 1;
Break();
)
)
);
dt[0, 0] = x;