Ajouter des données de colonne d'une table à une table déjà existanteSalut,
J'essaie d'ajouter des données de colonne d'une table de sortie (appelée "sortie") à une TABLE EXISTANTE (appelée "Stanmore et Lam"), mais lorsque j'utilise la commande join, cela crée une nouvelle table de sortie vide. Mon code est le suivant :
output = New Table( "Output",
AddRows( 1 ),
New Column( "Y (coronal) mm", Numeric, Continuous ),
New Column( "X (sagittal) mm", Numeric, Continuous )
);
:"Y (coronal) mm" << addRows( 1 );
:"X (sagittal) mm" << addRows( 1 );
:"Y (coronal) mm"[1] = ymax;
:"X (sagittal) mm"[1] = xmax;
dt2 = Open( "Stanmore and Lam.jmp" );
dt2 << Join(
With( Data Table( output ) ),
By Matching Columns( :"Y (coronal) mm" = :"Y (coronal) mm", :"X (sagittal) mm" = :"X (sagittal) mm" )
);
Existe-t-il un moyen d'ajouter simplement des valeurs de ligne dans une colonne spécifique à une colonne préexistante (les deux tables ont un nombre différent de colonnes et de lignes) sans saisir manuellement les données d'une table à l'autre ? Merci!
Noé
Re : Ajouter des données de colonne d'une table à une table déjà existanteJ'ai pu définir une référence en ajoutant ce qui suit au code que vous avez proposé ci-dessus :
toBeConcat = dt2 << Join(
With( Data Table( output ) ),
"Stanmore and Lam",
Update,
By Matching Columns(
:Name( "Y (coronal) mm" ) = :Name( "Y (coronal) mm" ),
:Name( "X (sagittal) mm" ) = :Name( "X (sagittal) mm" )
)
);
dt2 << Concatenate( toBeConcat, append to first table );
Ceci 1) met à jour le format de ma sortie pour l'adapter à celui de la table Stanmore et Lam et 2) concatène cette sortie à la table d'origine sans créer une nouvelle table de données de sortie. Alors maintenant, le code fait exactement ce dont j’ai besoin. Merci beaucoup pour votre aide!
Re : Ajouter des données de colonne d'une table à une table déjà existanteMon commentaire sur l'option "UPDATE" s'en chargera. Ajoutez simplement
Mise à jour,
à votre jointure, et il gérera ce que vous voulez.
Re : Ajouter des données de colonne d'une table à une table déjà existanteMerci pour la réponse rapide! Cette syntaxe fonctionne beaucoup mieux pour remplir une nouvelle table avec les valeurs dont j'ai besoin. Cela produit toujours une table entièrement nouvelle, alors existe-t-il un moyen d'y définir une référence afin de pouvoir la concaténer à ma table « Stan et Lanmore » ? Merci encore!
Noé
Re : Ajouter des données de colonne d'une table à une table déjà existanteVoici une refonte de votre script, pour le rendre syntaxiquement correct. Je ne peux pas parler de votre logique, puisque vous n'avez pas inclus quelles sont vos variables xmax et ymax, ni ce que contient le tableau de données "Stanmore et Lam".
output = New Table( "Output",
AddRows( 1 ),
New Column( "Y (coronal) mm", Numeric, Continuous ),
New Column( "X (sagittal) mm", Numeric, Continuous )
);
// You don't add rows to columns, you add rows to data tables. But since you have allready added
// a row to the new data table, you don't need to add a second row
//:"Y (coronal) mm" << addRows( 1 );
//:"X (sagittal) mm" << addRows( 1 );
// The proper form for what you are trying to do is:
// :Name("complex name")
//:"Y (coronal) mm"[1] = ymax;
//:"X (sagittal) mm"[1] = xmax;
:Name("Y (coronal) mm")[1] = ymax;
:Name("X (sagittal) mm")[1] = xmax;
dt2 = Open( "Stanmore and Lam.jmp" );
dt2 << Join(
With( Data Table( output ) ),
// You may want to use the "UPDATE" option to copy the matching rows from the joining table to the
// initial table
// Update,
// The proper naming structure has been replaced here too
By Matching Columns( :Name("Y (coronal) mm") = :Name("Y (coronal) mm") , :Name("X (sagittal) mm") = :Name("X (sagittal) mm") )
);