最大値を抽出する皆さん、こんにちは。私は列名をループして使用したいものを見つけるスクリプトを回避しました。その後、行番号とそのセルの値を見つけます。しかし、これらの値はすべての列で繰り返されることがわかりました。誰かが私がどこに問題があるのかを指摘することはできますか?
これがスクリプトです。
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 []の構文を指定していました。 行列として、あなたの例は有効ではありません。 だから私はあなたが持っているものがリストであるという仮定をして答えるつもりです。
表示されたリストには、複数のマトリックスが含まれています。 データを取り出すためにしなければならないのは、リストと行列の添字を正しく指定することだけです。 たとえば、あなたがあなたの例から数字13を引き出すことを望むなら、あなたは指定するでしょう
x = a[2][1]
そして "x"は13の値を含みます。 同様に、リストの4番目の行列の2番目の要素を取得したい場合は、[15,16]と指定します。
x = a[4][2]
各行列の1番目の要素すべてを取り出して単純なリストに移動するには、リスト内の "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 、
スクリプトはあなたが切り出したものをやっていると思います。繰り返し値が表示されるのは、列 "Prediction 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));
);
);
);