Ricodificare le colonne contenenti il valore del carattere alla fine di una colonnaCiao,
Ho un tavolo come
| ID | Colonna2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
Vorrei ricodificare la colonna ID in modo tale che tutti i miei valori come "ABC001234D" e "ABC001234F" diventino "ABC001234" - in pratica voglio eliminare l'ultima lettera nella dichiarazione. Tuttavia, non posso farlo attraverso il processo manuale. Ci sono troppe righe da fare e non potrei scriverle manualmente per ciascun ID che è possibile utilizzare nello script. Alla ricerca di un modo per farlo tramite lo scripting. Grazie!
Modellazione statistica avanzataAutomazione e scriptingCombinazione e pulizia dei datiPersonalizzazione di massaRi: Ricodificare le colonne contenenti il valore del carattere alla fine di una colonnaPer questo andrei con regex. A un certo punto mi è piaciuto andare avanti con le espressioni regolari almeno a un certo livello: regexone controlla anche Funzioni dei caratteri JMP - Regex e Regex dallo scripting index.
Ecco un esempio con due modi possibili per rimuovere i caratteri finali utilizzando Regex in JMP (possono essere facilmente modificati per supportare anche le lettere non maiuscole):
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(5),
Compress File When Saved(1),
New Column("ID",
Character,
"Nominal",
Set Values(
{"ABC001235G", "ABC001234", "ABC001235", "ABC001234D", "ABC001234F"}
)
)
);
dt << New Column("Regex1", Character, Nominal, Formula(Regex(:ID, "^[A-Z]+(\d+)")));
dt << New Column("Regex2", Character, Nominal, Formula(Regex(:ID, "[A-Z]*$", "", GLOBALREPLACE);));
A seconda del caso d'uso scegline uno (facile testare con il codice di esempio come funzionano con stringhe diverse):
Il primo corrisponderà a 1 o più caratteri maiuscoli dall'inizio della stringa seguiti da un numero qualsiasi di cifre (quindi ignorerà qualsiasi cosa dopo le cifre).
Il secondo corrisponderà a zero o più caratteri maiuscoli dalla fine della stringa e li sostituirà con una stringa vuota.
Ri: Ricodificare le colonne contenenti il valore del carattere alla fine di una colonnaPuoi farlo con la seguente formula:
val = Reverse( :ID );
While( Is Missing( Num( Substr( val, 1, 1 ) ) ),
val = Substr( val, 2 )
);
Reverse( val );
Ciò rimuoverà tutti i valori non numerici finali
Ri: Ricodificare le colonne contenenti il valore del carattere alla fine di una colonnaCiao, sano!
Ecco una formula che potrebbe aiutarti, ma dovrai fare alcune ipotesi sulle convenzioni di denominazione e sull'accuratezza della variabile ID.
Se i tuoi valori ID hanno sempre 3 caratteri all'inizio, potresti creare una nuova colonna e utilizzare questa formula:
Sottostr( :ID, 1, 3 ) || Regex( :ID, "\d+" )
Questa formula consentirà una lunghezza incoerente dei valori numerici.Non è nemmeno troppo difficile adattare la formula per avere numeri incoerenti di caratteri all'inizio dei valori ID.Ma se qualcuno digita erroneamente l'ID come 0 (il numero) invece di O (la lettera), o qualsiasi altro errore tipografico, potresti ottenere risultati imprevisti.
Buona fortuna,
Kevin