Voglio applicare due cose a una colonna specifica usando JSL.
1. Metti in maiuscolo il primo alfabeto in base a " ".
(esame, ple -> Esame, Ple , JSL TEST -> Jsl Test)
2. In caso di ","
Duplica la riga in modo che ci sia una riga usando la parola prima di "," e una riga come parola dopo "," basato su ",".
Per esempio:
- Colonna1 - "exam, ple" è inserito nella prima riga,
- Sostituiscilo con "Esame, Ple",
- Crea queste due righe e copia i valori di Colonna2 e Colonna3 così come sono.

Sarebbe davvero apprezzato se potessi dirmi lo script per applicare le due regole di cui sopra alla colonna.
Grazie in anticipo! Si prega di fare attenzione al COVID-19.
Il primo può essere fatto con Titlecase(). Il secondo può essere eseguito, ad esempio, eseguendo un ciclo sulle righe con For Each o in modo interattivo direttamente da JMP.
Soluzione interattiva:
1. Tavolo di partenza

2. Seleziona Col_a e vai su Cols / Utilities / Text to Columns e usa , come delimitatore

3. Quindi vai su Tabelle / Stack. Inizia con impostazioni come questa e provalo:

tabella dei risultati:

4. Elimina la colonna Etichetta e seleziona una delle righe vuote nella colonna Dati -> fai clic con il tasto destro -> seleziona le celle corrispondenti -> elimina le righe

Con lo scripting puoi fare ad esempio qualcosa del genere (richiede JMP16 a causa di For Each, ma può essere modificato in For-loop se necessario). Questo può anche essere reso più semplice se è noto quante colonne hai e quanti valori possono esserci nella stringa che viene utilizzata per duplicare le righe.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(2),
New Column("Col_a", Character, "Nominal", Set Values({"exam, ple", "JSL TEST"})),
New Column("Col_b", Numeric, "Continuous", Format("Best", 12), Set Values([123, 345])),
New Column("Col_3", Numeric, "Continuous", Format("Best", 12), Set Values([222, 333]))
);
Column(dt, "Col_a") << Set Each Value(Titlecase(:Col_a));
//using collector table:
dt_collector = dt << Subset(
Rows([1]),
Selected columns only(0)
);
dt_collector << Delete Rows([1]);
For Each Row(dt,
row_vals = dt[Row(), 0];
If(Contains(row_vals[1], ","),
new_items = Words(row_vals[1], ",");
For Each({new_item}, new_items,
dt_collector << Add Row(1);
row_to_add = Insert(Eval List({Trim Whitespace(new_item)}), Remove(row_vals, 1));
dt_collector[N Rows(dt_collector), 0] = row_to_add;
);
, //else
dt_collector << Add Row(1);
dt_collector[N Rows(dt_collector), 0] = row_vals;
);
);
//adding to same table
//get rows with ,
rows_to_add = dt << Get Rows Where(Contains(:Col_a, ","));
For Each({new_row}, rows_to_add,
new_items = Words(dt[new_row, "Col_a"], ",");
dt[new_row, "Col_a"] = Trim Whitespace(new_items[1]);
Remove From(new_items, 1);
For Each({new_item}, new_items,
dt << Add Rows(1);
row_to_add = Insert(Eval List({Trim Whitespace(new_item)}), Remove(dt[new_row, 0], 1));
dt[N Rows(dt_collector), 0] = row_to_add;
);
show(new_items);
);
Fantastico .. jthi !!!!
Lo script che hai suggerito ha risolto completamente entrambi i problemi.
Grazie mille.
ti auguro un buon capodanno 