Plusieurs à une table se joignentCher Monsieur/Madame,
J'ai deux tables que je dois rejoindre
Deux demandes :
Demande 1)
Le tableau 1 comporte plusieurs entrées par jour

Le tableau 2 a 1 entrée par jour

Je souhaite rejoindre les tables correspondant à "Nom du jeu de paramètres et horodatage"
pour créer un tableau comme celui-ci.Comment je fais ça?

Demande 2)
Étant donné les deux premiers tableaux, comment puis-je les joindre afin que, pour chaque jour donné, je n'obtienne que la dernière valeur du paramètre X, comme indiqué ci-dessous ?

Des idées et des suggestions ?
Merci, Timothée
Organisation du contenuMélange et nettoyage des donnéesles fenêtresRe : Rejoindre plusieurs tables à uneDe quelle version de JMP disposez-vous ? Si vous disposez de JMP17, il est plus simple d'ouvrir simplement les tables, d'aller dans le menu Rejoindre les tables et d'essayer différentes options. La demande 1 doit être une jointure très simple et pour la demande 2, vous devrez peut-être créer un tableau récapitulatif avant d'effectuer la jointure.
De plus, si vous êtes en mesure de nous fournir des exemples de tableaux (travaux anonymisés ou maquettes), nous pouvons vous fournir des instructions plus précises.
Re : Rejoindre plusieurs tables à uneJ'ai JMP16.J'ai mis des tableaux fictifs dans mon message.Est-ce que vous arrivez à les voir ?
Re : Rejoindre plusieurs tables à uneOk, si vous avez JMP16, vous n'aurez pas accès aux tables d'aperçu, mais vous pouvez activer l'option "Garder la boîte de dialogue ouverte", donc si vous ratez quelque chose, la boîte de dialogue est toujours ouverte.
Je peux voir les images, mais ce ne sont pas vraiment des tableaux car je ne peux pas les ouvrir dans JMP ou je ne peux pas importer les données dans JMP. Si vous pouviez les ajouter sous forme de tables JMP, cela rendrait les choses beaucoup plus faciles.
Re : Rejoindre plusieurs tables à unePour l'option 2, il existe un sale hack :
Join prend toujours la première entrée correspondante.
Donc avec l'option

- si tu inverse les ordres des tables (via tri décroissant) , la valeur "dernière" - (maintenant : première) restera.
Du coup, moins de tables ouvertes - mais une sensation bizarre si ce que je promets est vraiment vrai 
dt= new table("test", add rows(8),New Column( "Column 1",
set values([1 1 1 1 1 2 2 2])
)
);
dt << New Column( "Rank1", set each value( Col Rank( 1,:Column 1 ) ));
dt2 = dt << Subset( All rows, Selected columns only( 0 ) );
dt2: Rank1 << set name("Rank2");
dt << Sort(By( :Rank1 ),Replace Table,Order( Descending, Descending ));
dt2 << Sort(By( :Rank2 ),Replace Table,Order( Descending, Descending ));
dt << Join(
With( dt2 ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :Column 1 = :Column 1 ),
Drop multiples( 1, 1 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 0 )
);
Re : Rejoindre plusieurs tables à uneMerci pour la réponse.Je suis un peu flou quant à la création d'une colonne virtuelle.Pourriez-vous développer ?
Merci beaucoup
Re : Rejoindre plusieurs tables à unecréer une colonne virtuelle ~ transformer une colonne :
faites un clic droit sur l'une des colonnes de la liste et sélectionnez ligne/ligne :

Re : Rejoindre plusieurs tables à uneVoici quelques visuels pour appuyer @jthi et @hogi suggestions
Numéro 1
Tables=>Joindre Joindre la table 2 à la table 1

Numéro 2
Tables=>Trier Créez une colonne virtuelle et appelez-la Row.......la formule pour la colonne est Row()

Alors
Tables=>Joindre Joindre la table 1 à la table 2

Voici le JSL qui exécutera les 2 numéros
names default to here(1);
dt1 = New Table( "Table 1",
Add Rows( 6 ),
New Column( "Parameter Set Name",
Character,
Set Values(
{"27109N5", "27109N5", "27109N5", "27109N5", "27109N5", "27109N5"}
)
),
New Column( "Timestamp",
Format( "yyyy-mm-dd", 12 ),
Input Format( "yyyy-mm-dd" ),
Set Values(
[3600115200, 3600115200, 3600201600, 3600201600, 3600201600, 3600201600]
)
),
New Column( "Parameter X",
Set Values( [2.32, 1.21, 1.45, 1.45, 7.89, 2.04] )
)
);
dt2 = New Table( "Table 2",
Add Rows( 2 ),
New Column( "Parameter Set Name",
Character,
Set Values( {"27109N5", "27109N5"} )
),
New Column( "Timestamp",
Format( "yyyy-mm-dd", 12 ),
Input Format( "yyyy-mm-dd" ),
Set Values( [3600115200, 3600201600] )
),
New Column( "Parameter Y",
Format( "Best", 12 ),
Set Values( [21, 22] )
)
);
// Join data tables
// → Data Table( "One to Many" )
Data Table( "Table 1" ) << Join(
With( Data Table( "Table 2" ) ),
Merge Same Name Columns,
By Matching Columns(
:Parameter Set Name = :Parameter Set Name, :Timestamp = :Timestamp
),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "One to Many" )
);
// Create the Many to One table
// Sort data table
Data Table( "Table 1" ) << Sort(
By(
:Parameter Set Name,
:Timestamp,
Transform Column( "Row", Formula( Row() ) )
),
Replace Table,
Order( Ascending, Ascending, Descending )
);
// Join Table 1 to Table 2
// Join data tables
// → Data Table( "Many to One" )
Data Table( "Table 2" ) << Join(
With( Data Table( "Table 1" ) ),
Merge Same Name Columns,
By Matching Columns(
:Parameter Set Name = :Parameter Set Name, :Timestamp = :Timestamp
),
Drop multiples( 1, 1 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Many to One" )
);