提取最大值大家好,我解決了一個腳本,它會繞著列名循環並找到我想要使用的那些。然後它會找到該行號和該單元格的值。但是,我發現每列重複這些值。任何人都可以指出我可能出錯的地方嗎?
這是腳本:
dt = current data table();
col = dt << get column names( string );
nc = N Items( col );
Row = 1;
For( i = 1, i <= nc, i++,
for(r=1, r<=NRow(dt), r++,
Col1 = Column(dt,i);
If( Contains( col[i], "Prediction" ),
If(Column(dt, col[i])[r] > 5 | Column(dt, col[i])[r] > 4.5,
show(col[i]);
val = abs(Col Max( Col1 ));
show(val);
MaxRow = dt << get rows where(as column(Col1)==abs(Col Max( Col1 )));
show(MaxRow);
)
)
)
); <BR /><BR />The log looks like this:<BR /><BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction B";<BR />val = 6.6;<BR />MaxRow = [6];<BR />col[i] = "Prediction C";<BR />val = 5;<BR />MaxRow = [1];<BR />
回复:提取最大值我相信您提供的示例列表實際上應該被指定為
a={ [12], [13], [14],[15,16] };
您的示例指定了Matrix []的語法,而不是列表{}。 作為矩陣,您的示例無效。 所以我會回答你假設你擁有的是一個清單。
您顯示的列表包含多個matricies。 為獲取數據而必須做的就是正確指定列表和矩陣的下標。 例如,如果您想從示例中提取數字13,則需要指定
x = a[2][1]
然後“x”將包含值13。 同樣,如果你想檢索列表中第4個矩陣的第2個元素,[15,16]你會指定:
x = a[4][2]
要獲取每個基質中的所有第一個元素,並將它們移動到一個簡單的列表中,您需要做的就是遍歷列表中名為“a”的元素並提取第一個矩陣元素
a = {[12], [13], [14], [15, 16]};
aList = {};
For( i = 1, i <= N Items( a ), i++,
Insert Into( aList, a[i][1] )
);
Show( aList );
結果將是:
aList = {12,13,14,15};
回复:提取最大值我不知道為什麼,但我有一個看起來像這樣的列表:
a=[ [12], [13], [14],[15,16] ];
如何提取數字並將其添加到數字格式的表中?這是一個列表中的列表嗎? @uday_guntupalli 另外,如果我在上面的列表中有多個像[15,16]這樣的值,我只想將15添加到數據表中。謝謝。
回复:提取最大值你好 @amy ,
您想將哪些數據保存到數據表中?
在您發布的示例腳本中,ColNames [i]引用ColNames的特定值,該值是所有列名稱的列表。您能否提供這些列中包含的內容的示例。
你在嘗試什麼以及你所走的道路是正確的。您只想確保傳遞給列的數據是正確的。這是一個簡單的例子:
Names = {"Rick","Tom","Sam"};
Age = [10,20,30];
Weight = [110,130,150];
dt = New Table("Test", Add Rows(N Items(Names)),
New Column("NamesOfStudents",Character,Nominal,<<SET values=""></SET>回复:提取最大值如何在表格中保存所有這些值? @uday_guntupalli
dt1 = New Table( "Information",
New Column("ColName", character, nominal, values(ColNames[i])),
New Column("MaxVal", numeric, continuous, values(MaxVal)),
New Column( "Column", character, nominal, values (Col))
);回复:提取最大值哎呀,我明白了.. 非常感謝 @uday_guntupalli
回复:提取最大值 @amy ,
我認為劇本正在做你所做的事情。您看到重複值的原因是因為在“預測B”列中,有3個值,即符合您指定條件的行,因此重複打印相同的值 - 因為您要求它打印最大值和位置。
或者,您可以嘗試這樣做。
dt = Current Data Table();
// amy's approach
//col = dt << get column names( string );
//nc = N Items( col );
//Row = 1;
//For( i = 1, i <= nc, i++,
// For( r = 1, r <= N Row( dt ), r++,
// Col1 = Column( dt, i );
// If( Contains( col[i], "Prediction" ),
// If( Column( dt, col[i] )[r] > 5 | Column( dt, col[i] )[r] > 4.5,
// Show( col[i] );
// val = Abs( Col Max( Col1 ) );
// Show( val );
// MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
// Show( MaxRow );
//
// )
//
// );
// )
//);
// alternatively
ColNames = dt << get column names( string );
for(i = 1, i <= N Cols(dt), i++,
If( Contains( ColNames[i], "Prediction" ),
Col = Column(dt,i); // get reference to column
MaxVal = Col Max(Col);
ColVals = As List(Col << Get Values);
If(MaxVal > 4.5,
Show(Col);
Show(MaxVal);
Show(Loc(ColVals,MaxVal));
);
);
);