Unione di tabelle molti a unoCaro Signore / Signora,
Ho due tabelle che devo unire
Due richieste:
Richiesta 1)
La tabella 1 ha più voci al giorno

La tabella 2 ha 1 voce al giorno

Vorrei unire le tabelle corrispondenti a "Nome set di parametri e timestamp"
per creare una tabella come questa.Come lo faccio?

Richiesta 2)
Date le prime due tabelle, come posso unirle in modo che per ogni dato giorno ottenga solo l'ultimo valore per il parametro X come mostrato di seguito

Qualche pensiero e suggerimento?
Grazie, Timoteo
Organizzazione dei contenutiCombinazione e pulizia dei datifinestreRe: Unione di tabelle da molti a unoQuale versione di JMP hai? Se hai JMP17 è più semplice tenere semplicemente aperti i tavoli, vai al menu Unisci tavoli e prova diverse opzioni. La richiesta 1 dovrebbe essere un'unione molto semplice e per la richiesta 2 potrebbe essere necessario creare una tabella di riepilogo prima di eseguire l'unione.
Inoltre, se sei in grado di fornirci tabelle di esempio (lavori anonimizzati o mock-up), possiamo fornirti istruzioni più precise.
Re: Unione di tabelle da molti a unoHo JMP16.Ho inserito delle tabelle modello nel mio post.Riesci a vederli?
Re: Unione di tabelle da molti a unoOk, se hai JMP16, non avrai accesso alle tabelle di anteprima, ma puoi abilitare l'opzione "mantieni la finestra di dialogo aperta" quindi se sbagli qualcosa, avrai ancora la finestra di dialogo aperta.
Riesco a vedere le immagini, ma quelle non sono realmente tabelle poiché non posso aprirle in JMP o importare i dati in JMP. Se potessi aggiungerli come tabelle JMP, sarebbe molto più semplice.
Re: Unione di tabelle da molti a unoPer l'opzione 2 c'è uno sporco hack:
L'adesione accetta sempre la prima voce corrispondente.
Quindi con l'opzione

- se tu inversione gli ordini della tabella (tramite ordinamento discendente) , il valore "ultimo" - (ora: primo) rimarrà.
Quindi, tavoli meno aperti - ma è una strana sensazione se quello che prometto è davvero vero 
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: Unione di tabelle da molti a unoGrazie per la risposta.Sono un po' confuso sulla creazione di una rubrica virtuale.Potresti approfondire?
grazie mille
Re: Unione di tabelle da molti a unocrea colonna virtuale ~ trasforma colonna:
fare clic con il tasto destro su una delle colonne dell'elenco e selezionare riga/riga:

Re: Unione di tabelle da molti a unoEcco alcuni elementi visivi a supporto @jthi E @hogi suggerimenti
Problema 1
Tabelle=>Unisci Unisci la Tabella 2 alla Tabella 1

Problema 2
Tabelle=>Ordina Crea una colonna virtuale e chiamala Riga.......la formula per la colonna è Riga()

Poi
Tabelle=>Unisci Unisci la Tabella 1 alla Tabella 2

Ecco la JSL che eseguirà i 2 numeri
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" )
);