Joindre des tablesJe dois joindre deux tables en utilisant jsl. Le premier tableau ressemble à ceci :
Cependant, le deuxième tableau peut ressembler à ceci :

Dans ce tableau, Pred Form Molecule 1 (%) (2) est identique à Molecule 1 (%) et les nombres dans la colonne de valeurs sont répétés. Comment puis-je spécifier la jointure pour ne prendre en compte qu'une seule de ces valeurs ?
La deuxième table à rejoindre peut ressembler à ceci :

Dans ce cas, comment puis-je spécifier dans la jointure que la molécule 1 (%) dans le premier tableau est la même que Pred Form Molecule1 (%) (2) dans le tableau qui doit être joint.
La table finale dont j'ai besoin devrait ressembler à ceci :
Merci pour toute aide.
Re : Joindre des tables@pmroz ,
Merci d'avoir clarifié. Mon problème, je me demandais s'il y avait une meilleure façon d'aborder ce qui me manquait.
@pmroz a écrit:
Je suggérais de recoder pour changer valeurs dans une colonne, ne changez pas le nom de la colonne.Pour utiliser l'option de recodage, mettez en surbrillance la colonne que vous souhaitez recoder et cliquez sur Cols > Utilitaires > Recoder (v12) ou Cols > Recoder (v13).
Re : Joindre des tablesJe suggérais de recoder pour changer valeurs dans une colonne, ne changez pas le nom de la colonne.Pour utiliser l'option de recodage, mettez en surbrillance la colonne que vous souhaitez recoder et cliquez sur Cols > Utilitaires > Recoder (v12) ou Cols > Recoder (v13).
Re : Joindre des tables@txnelson & @pmroz ,
Si vous me le permettez, j'aimerais poser une question : pourquoi recommanderiez-vous que les noms de colonnes soient recodés/renommés compte tenu de la structure de la table ?La structure actuelle de la table partagée montre que les données sont dans les lignes. Bien que je comprenne, on peut toujours transposer les données et renommer les colonnes, je me demande si c'est l'approche que vous recommandez ? S'il vous plaît, des conseils
Re : Joindre des tablesVous pouvez utiliser la boîte de dialogue Rechercher (Rechercher) pour modifier les noms de colonnes ou des parties de noms de colonnes.

Re : Joindre des tables@Aam_jmp ,
J'ai testé ce code en utilisant des tables try and join. Vous pouvez l'étendre de manière appropriée pour inclure try1 si nécessaire.
Clear Log(); Clear Globals();
// Open Data Tables
dt1 = Open(FilePath1); // Where FilePath1 points to your file location for JOIN table
dt2 = Open(FilePath2); // Where FilePath2 points to your file location for try table
// Get Y values from main table
YVals = dt1:Y << Get Values;
// Get Col values from second table
ColVals = dt2:Col << Get Values;
// Loop through the values
for(i = 1, i <= N Items(YVals), i++,
for(r = 1, r <= N Items(ColVals), r++,
If(Contains(ColVals[r],YVals[i]),
ColVals[r] = YVals[i];
);
);
);
// Assign Corrected Values back to dt2
dt2 << New Column("CorrectedCol",Character,Continuous, << Set Values(ColVals));
// Join Tables
dt_Intermediate = dt1 << Join(With(dt2 ),
Select( :Y, :Quan Reqd ),
SelectWith( :Value ),
By Matching Columns( :Y = :CorrectedCol ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
// Remove Duplicates
dt_Results = dt_Intermediate << Summary(
Group( :Y, :Quan Reqd, :Value ),
Freq( "None" ),
Weight( "None" )
);
Re : Joindre des tablesSalut Uday, j'ai ajouté les tableaux.
Re : Joindre des tables@Aam_jmp ,
Voir ci-dessous quelques exemples de code. Cela devrait fonctionner pour n'importe quelle table de données dans JMP. Si ce n'est pas le cas, je vous demanderais de partager un échantillon de vos tableaux de données et je pourrai essayer de voir quel est le problème.
Clear Log(); Clear Globals();
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
// Extract Column Names
ColNames = dt << Get Column Names("String");
// Extract Rows from a column
Cities = dt:city << Get Values;
// Change Column Name
Col = Column(dt,1);
Col << Set Name("City_Edit");
// Change Row Values
dt:City_Edit[7] = "TEMPE";
Re : Joindre des tablesComment recoder les noms de colonnes ?@pmroz De plus, l'option Recoder est grisée pour ma table.
Re : Joindre des tablesAujourd'hui, je ne suis même pas capable d'extraire les noms de colonnes, je suppose, à cause des chiffres et du signe "%" qu'ils contiennent. Pouvez-vous m'indiquer comment procéder ? Pour l'instant, je travaille sur ce script pour extraire les noms. Merci.
dt = Open( "C:\Utilisateurs\filepath\try1.jmp" );
col_names = dt << Obtenir les noms de colonnes ();
Afficher(col_names);
Re : Joindre des tablesCols > Utilitaires > Recoder vous permettra de changer les valeurs en valeurs standard.
Re : Joindre des tables@Aam_jmp ,
2 étapes.
Étape 1 : Extraire les valeurs des titres dans le tableau 1
Étape 2 : Parcourez les titres du tableau 1 et recherchez des noms similaires dans le tableau 2, puis mettez à jour la ligne pour refléter la même chose.
Re : Joindre des tablesComment puis-je manipuler les noms de la colonne pour qu'ils ressemblent à la table à laquelle ils doivent se joindre ?
Re : Joindre des tables@Aam_jmp ,
La jointure interne entre les tables recherchera les colonnes qui correspondent. Pouvez-vous renommer les lignes identiques dans le tableau 2 ? Cela donnera automatiquement le résultat souhaité. À moins que vos lignes soient trop nombreuses et que vous ne puissiez pas suivre, c'est une façon de le faire.