Copia un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraHo due tabelle di dati. Alcune colonne su table2 sono identiche alle colonne table1.
Non dovevo copiare i dati delle colonne identiche da table2 a table1.
Ciò significa, ovviamente, che (1) table1 verrà espanso con il numero o le righe in table2 e (2) mancheranno i dati in table1. Va bene.
Il mio problema è come copiare i dati da table2 a table1.
Ad esempio, entrambe le tabelle hanno la colonna "NOME". Table1 ha 1000 righe, table2 ha 2000 righe.
I risultati saranno: table1 con 3000 righe e "NAME" su table1 sarà una "concatenazione" di entrambe le colonne NAME. Altre colonne nella tabella 1 avranno 2000 dati mancanti/vuoti.
A proposito, in realtà, le tabelle sono molto più grandi e ci sono 10-20 colonne identiche (su ~ 100). Me ne occuperò una volta che avrò capito la funzione di base. Ne parlo nel caso in cui ci sia un problema con tali dimensioni.
Grazie molto
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraQualcosa non ha funzionato per me con l'esempio.
Ma, non importa, ho avuto l'idea e sembrava funzionare con l'esecuzione di un test su alcuni file di input ..
Sembra che abbia complicato le cose inutilmente mentre avevo sotto il naso un modo semplice.
Grazie per la vostra pazienza
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altra
@RonB ha scritto:
Sì, lo capisco. Ma la struttura dati di cui mi occupo richiede di copiare anche colonne in Big Class che non hanno lo stesso nome in Fitness. Cioè, queste colonne saranno "concatenate verticalmente" alla tabella di output come nuove colonne. Queste colonne inizieranno con i dati mancanti (tante righe quante sono in Fitness) seguite dai dati di Big Class.
In che modo è diverso dal semplice concatenare insieme le due tabelle per cominciare? In questo modo ti ritroverai con una tabella con tutte le righe e tutte le colonne di entrambe le tabelle. Le colonne che non hanno nomi corrispondenti in entrambe le tabelle saranno vuote per le righe che originariamente non avevano quelle colonne.
Smettiamola di parlare in modo astratto e siamo più concreti. Ecco due tabelle:
Tabella 1
Tavolo 2
Usando Tabelle->Concatena su queste due tabelle, ti ritroverai con questa tabella.
Tabella3
| UN |
B |
C |
D |
| 1 |
1 |
1
|
• |
| 2 |
2 |
2 |
• |
| 3 |
3 |
3 |
• |
| 4 |
4 |
• |
4 |
| 5 |
5 |
• |
5 |
| 6 |
6 |
• |
6 |
Il modo in cui interpreto la tua descrizione sopra mi fa pensare che sia il tavolo che desideri. In caso contrario, mi dispiace di aver frainteso la tua richiesta.
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraSì, lo capisco. Ma la struttura dati di cui mi occupo richiede di copiare anche colonne in Big Class che non hanno lo stesso nome in Fitness. Cioè, queste colonne saranno "concatenate verticalmente" alla tabella di output come nuove colonne. Queste colonne inizieranno con i dati mancanti (tante righe quante sono in Fitness) seguite dai dati di Big Class.
Penso di poterlo fare aggiungendo prima a Fitness nuove colonne con tutti i nomi in Big Class che sono diversi. Quindi usa lo stesso metodo che mi hai mostrato, sottoimpostando Big Class solo con queste colonne e facendo la concatenazione.
È un sacco di lavoro ma non vedo altro modo per gestire il gran numero di tabelle e colonne che ho.
Grazie ancora
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altra
@RonB ha scritto:
Ora devo solo capire come copiare le colonne non corrispondenti ma penso di potercela fare.
Colonne non corrispondenti da quale tabella? L'esempio sopra mantiene tutte le colonne della tabella Fitness e concatena solo le colonne che hanno lo stesso nome di Big Class. Lo fa semplicemente sottoimpostando Big Class per ottenere le colonne con gli stessi nomi e quindi concatenandole a Fitness (che ha ancora tutte le sue colonne).Non dovrebbe esserci alcun lavoro per mantenere le colonne non corrispondenti.
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraLavorato. Grazie molto. Ora devo solo capire come copiare le colonne non corrispondenti ma penso di potercela fare.
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraFarò un tentativo e riferirò (potrebbe richiedere del tempo a causa di circostanze non correlate).
Molte tx
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altra
@RonB ha scritto:
Se ho capito bene, devo creare la tabella 2.1 con le colonne ea, quindi riordinarle in modo che siano ae e concatenare la tabella 2.1 alla tabella 1?
Ce l'hai, non c'è bisogno di riordinare le colonne però. Tabelle->Concatena le corrispondenze sul nome della colonna, non sulla posizione.
Il sottoinsieme si basa sulla selezione delle colonne, quindi è necessario selezionare le colonne che sono in comune tra le due tabelle. Ma è facile perché puoi semplicemente ottenere tutti i nomi delle colonne da table1 e selezionare l'intero elenco rispetto a table2. Tutto ciò che non esiste verrà ignorato.
Ecco un esempio che utilizza due delle tabelle di dati di esempio.
bc = Open( "$SAMPLE_DATA\Big Class.jmp" );
fit = Open( "$SAMPLE_DATA\Fitness.jmp" );
fit_cols = fit << get column names;
bc << select columns( fit_cols );
sub_bc = bc << Subset( All rows, Selected columns only( 1 ) );
fit << Concatenate( sub_bc );
//if you don't want a new table you can use "Append to first table"
fit << Concatenate( sub_bc, Append to first table );
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraOK. Buon incoraggiamento.
Table1 ha colonne abcde, table2 ha colonne xyezau v. Voglio concatenare a table1 solo colonne ea da table2. Come faresti per farlo?
Se ho capito bene, devo creare la tabella 2.1 con le colonne ea, quindi riordinarle in modo che siano ae e concatenare la tabella 2.1 alla tabella 1?
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraNon rinunciare alle funzioni integrate, come Tabelle->Concatena così velocemente.
Se vuoi solo le colonne che hanno lo stesso nome tra due tabelle, puoi usare Tabelle->Sottoinsieme per creare due tabelle con solo quelle colonne da ogni tabella e quindi concatenare quelle due tabelle.
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraGrazie ancora. Sfortunatamente, concatenare non funzionerà a causa della natura bizzarra dei miei set di dati.
Devo concatenare solo determinate colonne, ignorando il test.
Posso sempre scorrere tutte le righe nella tabella di origine e inserire righe nelle tabelle di destinazione e quindi impostare il valore della colonna uno per uno. Ma temo che consumerà la CPU: il mio script elaborerà oltre 100 file con dozzine di colonne e migliaia di righe. Inoltre, non è una soluzione elegante, anche se probabilmente inevitabile.
Semplificherò la mia domanda.
Posso fare una cosa del genere?
Column(dt, i)[from,to] = lista o matrice di valori
Grazie per la tua pazienza,
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraLa concatenazione non ignora le colonne non corrispondenti.Ecco un esempio che utilizza le famiglie Big Class e Big Class, tabelle di dati di esempio.Si prega di notare che la tabella dati Big Class finisce con tutte le colonne che le famiglie Big Class hanno che non sono nella tabella dati originale Big Class.
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = Open( "$SAMPLE_DATA/big class families.jmp" );
dt1 << concatenate( dt2, Append to First Table( 1 ) );
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraGrazie.
La funzione concatena non funzionerà perché devo farlo solo per le colonne identiche in entrambe le tabelle, saltando tutte le altre.
Ho provato a memorizzare i dati della colonna di origine in una matrice/lista e quindi a impostare il valore sulla colonna di destinazione (la seconda tabella) utilizzando l'abbonamento [I, j] ma suppongo che mi manchi qualcosa.
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraPuoi fare in modo che JMP generi il codice per te.
Corri il
Tabelle==>Concatena
in modo interattivo, quindi nella nuova tabella dati, vai nel pannello Tabelle sul lato sinistro della tabella dati e fai clic con il pulsante destro del mouse sulla voce "Sorgente" e seleziona "Modifica".Lì vedrai il JSL richiesto per concatenare i file insieme.
Il JSL è fondamentalmente
dt1=data table(<YOUR first="" table="">);
dt2=data table(<YOUR second="" table="">);
dt1 = dt1 << concatenate( dt2, Append to First Table(1));</YOUR></YOUR>
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraGrazie. Ci ho pensato. Tuttavia, ho bisogno di farlo con uno script perché ho molti di questi file e l'ordine delle colonne cambia da uno a uno.
Mi piacerebbe capire un codice che lo farà.
Grazie
Oggetto: copiare un sottoinsieme di colonne o un intervallo di celle da una tabella all'altraJMP concatenerà le tabelle di dati utilizzando
Tabelle==>Concatena
Allineerà le colonne in base al nome della colonna durante la concatenazione.I valori mancanti verranno aggiunti automaticamente nelle righe per le colonne che non compaiono nell'una o nell'altra tabella di dati.
La piattaforma di concatenazione mantiene intatto il nome per le colonne corrispondenti e aggiunge solo nuovi nomi di colonna per le colonne che non erano nella tabella dei dati di base.
Per la documentazione, vedere:
Aiuto==>Libri==>Utilizzo di JMP