Affectation d'une valeur minimale à une colonneSalut les gens,
J'ai 2 fichiers.
1er fichier :

2ème fichier :

J'essaie d'écrire un script qui recherchera l'âge minimum dans le 1er fichier et attribuera l'âge le plus bas dans le 2ème fichier
Par exemple
La 1ère rangée qui a trois nom Sam, John, Smith la valeur dans la colonne d'âge minimum doit donc être Min{Sam, John, Smith} Min{21, 27, 32} = 21
ma sortie finale ressemblera à ceci:

Des suggestions s'il vous plaît?
Merci
ScriptRe : Attribution d'une valeur minimale à une colonneLa fonction Column() n'est pas
d2:Column(2)[I]
c'est comme indiqué
Column( dt, 2 )[I]
Et si les index étaient des variables, le script terminé serait
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
indexd2minage = 2;
indexd2name = 1;
indexd1name = 1;
indexd1age = 2;
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
Column( dt2, indexd2minage )[i] =
Col Min(
If(
Contains(
Column( dt2, indexd2Name )[i],
as Column( dt1, indexd1Name )
),
Column( dt1, indexd1age ),
.
)
)
);Re : Attribution d'une valeur minimale à une colonneSalut @txnelson ,
J'ai essayé de remplacer le nom de la colonne par l'index de la colonne, mais il ne fonctionne pas
Aucune suggestion?
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Column(2)[i] =col min(If(contains(dt2:Column(1)[i],dt1:Column(1)),dt1:Column(2),.));
);
Re : Attribution d'une valeur minimale à une colonneJe veux dire dans ce script en remplaçant le nom de la colonne par l'index de la colonne
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt1:Name ), dt1:age, . ) )
);
Re : Attribution d'une valeur minimale à une colonneVoici un des exemples que j'ai donné
Column( "Age" ) << Get Property( "Units" );
Si vous examinez la documentation sur la fonction Column() dans la référence de syntaxe JSL, elle lit
Column(<dt>, "name", "formatted")
Column(<dt>, n)
Description
Gets a reference to the data table column.
Arguments
dt Optional reference to a data table. If this is not supplied, the current data table is used.
name Quoted string that is the name of the column.
formatted Quoted string that returns the formatted string of the cell value.
n Column number.
SI vous lisez l'exemple du Guide de syntaxe, il lit :
The Column function can also identify a column. For Big Class.jmp, the following expressions
all refer to age, the second column in the table:
Column( "age" );
Column( 2 );
Column( dt, 2 );
Column( dt, "age" );
Re : Attribution d'une valeur minimale à une colonneSalut @txnelson ,
Comment puis-je définir l'index de colonne au lieu du nom de colonne dans le script ci-dessus ?
Merci
Re : Attribution d'une valeur minimale à une colonneLa syntaxe pour obtenir la propriété est
obj << Get Property( the property you want to retrive );
Par conséquent, vous demanderiez l'une des propriétés de colonne pour la colonne Age comme :
:Age << Get Property( "Spec Limits" );
// or
Column( "Age" ) << Get Property( "Units" );
Et JMP permet de créer ses propres propriétés de colonne, vous pouvez donc faire quelque chose comme
dt1:Sam << Set Property("Age", 3);
dt1:Andy << Set Property("Age", 4);<BR />theAge = dt1:Andy << Get Property( "Age" );
Re : Attribution d'une valeur minimale à une colonneSalut @txnelson ,
Merci pour votre réponse rapide.
Je n'ai pas précisé ma question.
1. Dans la table de données 1st_file, vous avez 9 colonnes Oui
2. Dans la table de données 1st_file, vous disposez d'une ligne de données pour chaque colonne.
Si vous faites un clic droit sur un en-tête de colonne et sélectionnez "Propriétés de la colonne", vous verrez un longue liste d'éléments faisant référence à la colonne particulière que vous avez sélectionnée.
Puis-je importer ces valeurs de liste complètes dans la colonne de 2nd_file ?
Peut-on utiliser la syntaxe " Obtenir la propriété() "
Par exemple .
dt1 << Obtenir la propriété("Âge");
puis utilisez la boucle for pour l'assigner dans le 2ème fichier ?
Merci encore
Re : Attribution d'une valeur minimale à une colonneTout d'abord, je dois clarifier certains termes.
- Dans la table de données 1st_file, vous avez 9 colonnes
- Dans la table de données 1st_file, vous disposez d'une ligne de données pour chaque colonne.Vous ne disposez pas de ce que JMP appelle les propriétés de colonne.Si vous cliquez avec le bouton droit sur un en-tête de colonne et sélectionnez "Propriétés de la colonne", vous verrez une liste complète d'éléments faisant référence à la colonne particulière que vous avez sélectionnée.
Je mentionne ce qui précède, uniquement parce que lorsque vous avez utilisé les mots-clés, propriété de colonne, je suis immédiatement passé à l'idée de propriétés de colonne JMP.Cela a créé un tas de fausses hypothèses qui ont conduit à un tas de confusion pour moi.
Cela mis à part, voici quelques façons de résoudre votre problème
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
// Transpose the data into a standard data table format
dt3 = dt1 << Transpose(
invisible,
columns( :Sam, :Andy, :John, :Ed, :Jonny, :Smith, :Scott, :George, :Mathew ),
Output Table( "Transpose of 1st_file" )
);
Current Data Table( dt3 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt3:Label ), dt3:Name( "Row 1" ), . ) );
Show( dt2:minimum Age[i] );
);
Close( dt3, nosave );
Prenez un peu plus de temps pour traiter les données, mais une création de table secondaire n'est pas nécessaire.
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
For( i = 1, i <= N Rows( dt2 ), i++,
ages = {};
For( k = 1, k <= N Cols( dt1 ), k++,
If( Contains( dt2:Name[i], (Column( dt1, k ) << get name) ) > 0,
Insert Into( ages, Column( dt1, k )[1] )
);
);
dt2:Minimum Age[i] = Min( ages );
);Re : Attribution d'une valeur minimale à une colonneSalut @txnelson ,
Que se passe-t-il si les valeurs d'âge sont stockées dans les propriétés de colonne ? Comment puis-je importer les propriétés de la colonne (Âge) du 1er_fichier dans la colonne (Âge minimum) du 2ème fichier

Re : Attribution d'une valeur minimale à une colonneQu'est-ce qui vous a empêché de pouvoir prendre l'exemple de " Ajouter de nouvelles colonnes à une table de données " et l'ajouter à votre script ?
Saviez-vous que vous pouvez consulter le Guide de création de scripts et obtenir des exemples sur la manière de procéder ?Sinon, je vous recommande très fortement de vous familiariser avec elle.
Voici l'exemple de script que je vous ai donné, avec la nouvelle commande pour ajouter la nouvelle colonne
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
dt2 << New Column( "Minimum Age" );
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Re : Attribution d'une valeur minimale à une colonneSalut @txnelson ,
Merci de votre aide.
Le 2e fichier n'a pas de colonne d'âge minimum. Comment puis-je créer la 2ème colonne avec le nom "Âge minimum" puis attribuer la valeur la plus basse ?
Re : Attribution d'une valeur minimale à une colonneVoici un court script qui fera ce que vous voulez ...... la clé est que la plupart des individus ne réalisent pas que ce qui est passé à une fonction de calcul peut être conditionnel.Voir le script ci-dessous
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Re : Attribution d'une valeur minimale à une colonneJoindre les fichiers