Unione di tabelleDevo unire due tabelle usando jsl. La prima tabella è simile a questa:
Tuttavia, la seconda tabella può essere così:

In questa tabella, Pred Form Molecule 1 (%)(2) è uguale a Molecule 1(%) e i numeri nella colonna dei valori vengono ripetuti. Come posso specificare il join per considerare solo uno di questi valori?
La seconda tabella da unire può assomigliare a questa:

In questo caso, come posso specificare nel join che la Molecola 1 (%) nella prima tabella è la stessa di Pred Form Molecule1 (%)(2) nella tabella che deve essere unita.
La tabella finale di cui ho bisogno dovrebbe essere qualcosa del genere:
Grazie per tutto l'aiuto.
Re: Unione di tabelle@pmroz ,
Grazie per aver chiarito Colpa mia, mi chiedevo se ci fosse un modo migliore per affrontare questo problema che mi mancava.
@pmroz ha scritto:
Stavo suggerendo di ricodificare per modificare valori in una colonna, non modificare il nome della colonna.Per utilizzare l'opzione di ricodifica, evidenzia la colonna che desideri ricodificare e fai clic su Cols > Utilità > Ricodifica (v12) o Cols > Ricodifica (v13).
Re: Unione di tabelleStavo suggerendo di ricodificare per modificare valori in una colonna, non modificare il nome della colonna.Per utilizzare l'opzione di ricodifica, evidenzia la colonna che desideri ricodificare e fai clic su Cols > Utilità > Ricodifica (v12) o Cols > Ricodifica (v13).
Re: Unione di tabelle@txnelson & @pmroz ,
Se posso, vorrei porre una domanda: perché consiglieresti di ricodificare/rinominare i nomi delle colonne data la struttura della tabella?La struttura attuale della tabella condivisa mostra che i dati sono nelle righe. Anche se capisco che è sempre possibile trasporre i dati e rinominare le colonne, chiedendosi se questo è l'approccio che stai consigliando? Per favore consiglio
Re: Unione di tabelleÈ possibile utilizzare la finestra di dialogo Cerca (Trova) per modificare i nomi delle colonne o parti dei nomi delle colonne

Re: Unione di tabelle@Aam_jmp ,
Ho testato questo codice utilizzando le tabelle try and join. È possibile espanderlo in modo appropriato per includere try1, se necessario.
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: Unione di tabelleCiao Uday, ho aggiunto le tabelle.
Re: Unione di tabelle@Aam_jmp ,
Vedi sotto qualche codice di esempio. Questo dovrebbe funzionare per qualsiasi tabella dati in JMP. In caso contrario, ti chiederei di condividere un campione delle tue tabelle di dati e posso provare a vedere qual è il problema.
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: Unione di tabelleCome si ricodificano i nomi delle colonne?@pmroz Inoltre, l'opzione Ricodifica è disattivata per la mia tabella.
Re: Unione di tabelleUday, non sono nemmeno in grado di estrarre i nomi delle colonne, immagino a causa dei numeri e del segno "%" al loro interno. Potete indicarmi come posso farlo? Per ora, sto lavorando su questo script per estrarre i nomi. Grazie.
dt = Apri("C:\Utenti\percorsofile\try1.jmp");
col_names = dt << Ottieni i nomi delle colonne();
Mostra(colon_nomi);
Re: Unione di tabelleCols > Utilità > Ricodifica ti consentirà di modificare i valori in valori standard.
Re: Unione di tabelle@Aam_jmp ,
2 passaggi.
Passaggio 1: estrai i valori dei titoli nella tabella 1
Passaggio 2: scorrere i titoli nella tabella 1 e cercare nomi simili nella tabella 2, quindi aggiornare la riga per riflettere lo stesso
Re: Unione di tabelleCome posso manipolare i nomi nella colonna in modo che abbiano lo stesso aspetto della tabella a cui deve unirsi?
Re: Unione di tabelle@Aam_jmp ,
L'Inner Join tra le tabelle cercherà le colonne da abbinare. Puoi rinominare le righe uguali nella tabella 2? Ciò darà automaticamente il risultato desiderato. A meno che le righe non siano troppe e non puoi tenerne traccia, questo è un modo per farlo.