Extraire les maximumsBonjour à tous, J'ai travaillé sur un script qui contournerait les noms de colonnes et rechercherait ceux que je voulais utiliser. Il trouve ensuite le numéro de la ligne et la valeur de cette cellule. Cependant, je trouve que ces valeurs sont répétées pour chaque colonne. Quelqu'un peut-il m'indiquer où je pourrais me tromper?
Voici le script:
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 />
Re: Extraire les maximumsJe pense que votre liste d’exemples que vous avez fournie aurait dû être spécifiée comme suit:
a={ [12], [13], [14],[15,16] };
Votre exemple avait spécifié la syntaxe d'une matrice [], pas une liste {}. En tant que matrice, votre exemple n'est pas valide. Je vais donc répondre en supposant que vous avez une liste.
La liste que vous affichez contient plusieurs matrices. Pour extraire les données, il suffit de spécifier correctement l'indice pour la liste et la matrice. Ainsi, par exemple, si vous souhaitez extraire le nombre 13 de votre exemple, vous devez spécifier
x = a[2][1]
et "x" contiendrait alors la valeur de 13. De même, si vous voulez récupérer le 2ème élément de la 4ème matrice de votre liste, vous devez spécifier [15,16]:
x = a[4][2]
Pour prendre tous les premiers éléments de chacune des matrices et les déplacer dans une simple liste, il vous suffit de parcourir en boucle les éléments de votre liste appelés "a" et d'extraire le premier élément de la matrice.
a = {[12], [13], [14], [15, 16]};
aList = {};
For( i = 1, i <= N Items( a ), i++,
Insert Into( aList, a[i][1] )
);
Show( aList );
et le résultat serait:
aList = {12, 13, 14, 15};
Re: Extraire les maximumsJe ne sais pas pourquoi, mais j'ai une liste qui ressemble à ceci:
a=[ [12], [13], [14],[15,16] ];
Comment puis-je simplement extraire des nombres et les ajouter à un tableau au format numérique? Est-ce que c'est comme une liste dans une liste? @uday_guntupalli De plus, si j'ai plusieurs valeurs comme [15,16] dans la liste ci-dessus, je voudrais seulement que 15 soit ajouté à une table de données. Je vous remercie.
Re: Extraire les maximumsBonjour @amy ,
Quelles données souhaitez-vous enregistrer dans la table de données?
Dans l'exemple de script que vous avez publié, ColNames [i] fait référence à une valeur spécifique de ColNames, qui est une liste de tous les noms de colonnes. Pouvez-vous fournir un échantillon de ce qui est contenu dans ces colonnes?
Ce que vous essayez et le chemin sur lequel vous vous trouvez sont corrects. Vous voulez simplement vous assurer que les données que vous transmettez aux colonnes sont correctes. Voici un exemple simple:
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>Re: Extraire les maximumsComment puis-je sauvegarder toutes ces valeurs dans un tableau? @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))
);Re: Extraire les maximumsOups, je l'ai eu .. Merci beaucoup @uday_guntupalli
Re: Extraire les maximums @amy ,
Je pense que le script fait ce que vous avez scritpé. La raison pour laquelle vous voyez les valeurs répétées est que, dans la colonne "Prédiction B", il y a 3 valeurs, à savoir les lignes qui remplissent la condition que vous avez spécifiée, de sorte que la même valeur est imprimée à plusieurs reprises - puisque vous lui avez demandé d'imprimer la valeur maximale. et la position.
Alternativement, vous pouvez essayer de le faire de cette façon.
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));
);
);
);