Combinazione di voci di N colonne in un'unica colonna basata su voci univocheCIAO,
Ho colonne N, che hanno dati di carattere che voglio consolidare in una singola colonna.Per una data riga, molte delle colonne possono essere vuote o contenere valori ripetuti/stessi (rispetto alla voce in un'altra colonna).
So che c'è la funzione in Cols -> Utilities -> Combine Columns e questo genererà una nuova colonna con tutti i campi affiancati e delimitati.Ho bisogno di consigli su come eseguire questo processo mantenendo l'unicità (ad esempio, aggiungi solo i valori per quella colonna se non ci sono altre colonne in quella riga che hanno lo stesso valore)
Idealmente mi piacerebbe ottenere una guida su come scriverlo in JSL. Tuttavia, anche gli approcci intelligenti (ancora più noiosi) con le tabelle dati/funzioni di JMP sono i benvenuti!
Grazie.
Automazione e scriptingOggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univocheGrazie Brady_Brady!!
Funziona anche per me!!Oggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univocheGrazie mille signora!!
Mi piace la flessibilità di questa soluzione, inclusa la possibilità di specificare la colonna iniziale e finale # da utilizzare.Mi piace molto che tu abbia anche fatto l'ordinamento in ordine alfabetico per ridurre il numero di permutazioni!
Ci scusiamo per il ritardo nella risposta. Inizialmente pensavo ci fosse un problema con il caso d'angolo in cui non funzionava, ma dopo averlo rivisitato non vedo alcun problema.
Oggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univocheGrazie Txnelson per la rapida risposta e soluzione!
Funziona bene, tuttavia, i nomi delle mie colonne sono piuttosto lunghi e ne ho molti, quindi preferisco non dover specificare manualmente l'elenco.
Potrei ottenere i nomi delle colonne usando un semplice dt << Ottieni i nomi delle colonne e memorizzalo.
Mi è piaciuto molto anche il modo in cui il super utente "ms" ha organizzato le voci in ordine alfabetico, riducendo il numero di permutazioni (anche se non l'ho chiesto)
Ci scusiamo per il ritardo nella risposta.
Oggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univochePreferisco le risposte precedenti, ma puoi farlo anche tramite punta e clicca, il che è interessante per coloro che non scrivono script (apparentemente esistono persone che non scrivono script !!)
Come con l'approccio dell'array associativo, la colonna risultante ha i valori ordinati dal minore al maggiore.
1) Selezionare le colonne originali e, utilizzando l'utilità Combina colonne, creare una colonna a risposta multipla.
2) Selezionare la nuova colonna e applicare il testo all'utilità delle colonne, assicurandosi di selezionare la casella "crea indicatori".
3) Dopo aver selezionato le 10 nuove colonne dell'indicatore, applicare l'utilità di combinazione delle colonne, assicurandosi di selezionare la casella "le colonne sono colonne dell'indicatore".
Oggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univocheEcco un'alternativa alla formula di Jim. La differenza è che il valori unici del le stringhe combinate sono ordinate alfabeticamente anziché in ordine di occorrenza.
Il numero di colonne può essere generalizzato impostando il parametro local N .
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(Utilizza la notazione della matrice della tabella di dati e quindi solo in JMP 13 o versioni successive)
Oggetto: Combinazione di voci di N colonne in un'unica colonna basata su voci univocheEcco un modo per risolvere questa domanda.Ho creato una formula che combina i valori univoci da un elenco di colonne.Ho allegato una tabella di dati di esempio con la formula applicata all'ultima colonna

Di seguito la formula utilizzata
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );