Ricodifica le colonne che contengono 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 nell'istruzione. Tuttavia, non posso farlo attraverso il processo manuale. Ci sono troppe righe da fare e non potrei scriverlo manualmente per ogni ID che è possibile utilizzare nello script. Alla ricerca di un modo per farlo attraverso lo scripting. Grazie!
AnalisiTabella datiRe: Ricodifica le colonne che contengono 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 costantemente 3 caratteri all'inizio, puoi creare una nuova colonna e utilizzare questa formula:
Substr( :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.
In bocca al lupo,
Kevin
Re: Ricodifica le colonne che contengono 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 );
Questo rimuoverà tutti i valori finali non numerici
Re: Ricodifica le colonne che contengono il valore del carattere alla fine di una colonnaPer questo andrei con regex. Mi è piaciuto questo a un certo punto per iniziare con l'espressione regolare almeno a un certo livello: regexone controlla anche Funzioni dei caratteri JMP - Regex e Regex dall'indice di scripting.
Ecco un esempio con due possibili modi 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, sceglierne uno (facile da testare con il codice di esempio come funzionano con stringhe diverse):
Il primo corrisponderà a 1 o più caratteri maiuscoli dall'inizio della stringa seguito da qualsiasi numero 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.