Manipulation des données de colonne une seule foissalut!
J'ai un problème où je multiplie par 100 la colonne de données (un groupe de courants maximaux) pour obtenir les densités maximales de courant. Ainsi, lorsque j'exécute le script, il fonctionne correctement:
colonne ( 13 ) << définir des valeurs ( ( Colonne ( 13 ) << obtenir comme matrice ) * 100 ) ;
colonne ( 13 ) << nom de l'ensemble ( "Max Jc (mA / um ^ 2)" ) ;
Mais si je lance le script plusieurs fois, il continue à multiplier les données par cent et je dois fermer le datatable et le rouvrir.
Y a-t-il un moyen de le mettre à jour une seule fois?
Merci,
Tyler
Re: manipuler les données de colonne une seule foisBasé sur @pmroz Dans votre saisie, vous voudriez changer votre code comme suit:
//define columns to search for
colSearch1 = "Corrected Area";
colSearch2 = "Max Ic";
// Get Column Names from the data table
ColNames = dt << Get Column Names("string");
//search for desired columns
colNum1 = Contains(ColNames,colSearch1);
colNum2 = Contains(ColNames,colSearch2); Vous avez maintenant la référence nécessaire pour colNum1 et colNum2. Alternativement comme @pmroz a expliqué:
Col1 = column(dt,"Corrected Area") ;
Col2 = column(dt,"Max Ic") ;
Re: manipuler les données de colonne une seule foisVous devez seulement obtenir les noms de colonne une fois. Cela charge les noms de colonne dans une liste.
Mais vous pouvez également vous référer directement aux colonnes en utilisant leurs noms:
colonne (dt, " Max Ic (mA) ") est une construction acceptable.
Re: manipuler les données de colonne une seule foisDonc, je dois lire dans deux colonnes que je vais finalement utiliser pour un
analyse bivariée simple: pour l'instant, cela ne fonctionne pas! Merci encore pour tout
l'aide et les conseils!
// définit les colonnes à rechercher
colSearch1 = "Zone corrigée";
colSearch2 = "Ic max";
// obtenir des colonnes d'intérêt
Col1 = dt << * Obtenir les noms de colonne (* "Zone corrigée" *) *;
Col2 = dt << * Obtenir les noms de colonne (* "Max Ic" *) *;
// recherche des colonnes souhaitées
colNum1 = contient * (* Col1, colSearch1 *) *;
colNum2 = contient * (* Col2, colSearch2 *) *;
// colonne (13) << valeurs définies ((Column (13) << obtenir sous forme de matrice) * 100);
// column (13) << set name ("Max Jc (mA / um ^ 2)");
Column1 = Column * (* dt, colNum1 *) * << * valeurs définies (* * (* Column1 << * get as
matrice) * ** 100) *;
Column1 << * nom du set (* "Max Jc (mA / um ^ 2)" *) *;
Column2 = Column * (* dt, colNum2 *) *;
Fermer * (* dt, Save * (chemin du fichier)); *
// Appelez CreateBivariate pour effectuer une analyse bivariée (deux variables) \
statut = liste * (0 *, * 0) *;
Nouvelle fenêtre * (* "Analyse personnalisée",
H Liste de sélection * (*
Zone de liste V * (*
Panneau de commande * (* "Contrôles",
Zone de texte * (* "Choisir l'analyse" *) *,
choice = Check Box * ({* "Distribution", "Ajuster la ligne" *} *,
actuel = choix << * Get (1) *;
// xParam = Column (9);
// yParam = Column (13);
xParam = Column1;
yParam = Colonne2;
Si * (* et * (* actuel, pas * (* statut * [** 1] * *) * *) *,
dt << * Ajouter (*
dt = V List Box * (*
bivDistribution = Distribution * (*
Y * (* Eval * (* yParam *) * *) *,
X * (* Eval * (* xParam *) * *) *,
*) *;
*) *
Re: manipuler les données de colonne une seule fois @ tylerram93 ,
Cela devrait le faire.
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Define Column To Search For
ColToSearch = "age";
// Get Column Names
ColNames = dt << Get Column Names("String");
// Search if the desired column names exists
ColNum = Contains(ColNames,ColToSearch);
// Get Reference to desired Column
Col = Column(dt,ColNum);
// Alternatively
Col(ColNum) // Also refers to your desired column Re: manipuler les données de colonne une seule foisCela a fonctionné parfaitement! Merci!
Question de suivi:
Est-il possible de sélectionner des colonnes en fonction de leur nom? Ainsi, au lieu d’utiliser Column (13), il peut rechercher la colonne avec "Max Ic (mA)"
Merci,
Tyler
Re: manipuler les données de colonne une seule foisBonjour @ tylerram93:
Un moyen simple de résoudre ce problème est de vous assurer que la table est fermée à la fin du script. Tant que vos données brutes sont cohérentes, quel que soit le nombre de fois où vous exécutez le script, sauvegardez-le et fermez-le à la fin, comme indiqué ci-dessous, la multiplication ne doit avoir lieu qu'une fois.
En ne fermant pas la table, vous modifiez la table à plusieurs reprises, je pense.
Au cas où - j’ai mal compris votre question - veuillez coller un ensemble de données de test et un script de test.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
column(4) << set values( (Column(4) << get as matrix) *100);
column(4) << set name("Max Jc (mA/um^2)");
Close(dt,Save(FilePath));
Meilleur
uday