Come estrarre la posizione di un carattere in una stringa?Ho la seguente colonna, che contiene una stringa di caratteri, come punto o carattere (nessun numero e carattere speciale).
Voglio generare una colonna che elenchi la posizione del carattere che non è un punto. Vedi un esempio qui sotto.
Esiste una formula o uno script che posso utilizzare in JMP??
·cgaagt··a··········· 2,3,4,5,6,7,10
··t·a··············c·· 3,5,19
·····················
Modellazione statistica avanzataAutomazione e scriptingEsplorazione e visualizzazione dei datiRi: Come estrarre la posizione di un carattere in una stringa?Espansione @jthi ottima soluzione, credo che il modo migliore per gestire il tuo problema sia creare una nuova colonna in cui inserire i risultati.Inoltre, hai indicato che non solo un "." potrebbe essere usato come carattere speciale.Quindi il JSL seguente è una formula in grado di gestire più caratteri speciali e restituisce anche i risultati in una nuova colonna.Basta creare una colonna di caratteri e tagliare e incollare la formula al suo interno.

list_of_chars = Words( :strings, "" );
Substitute Into( list_of_chars, ".", "", "+", "", "/", "" );
charList = As List( Loc Nonmissing( list_of_chars ) );
Substr( Char( charList ), 2, Length( Char( charList ) ) - 2 );
Ri: Come estrarre la posizione di un carattere in una stringa?Penso che dovrai scriverlo.
- Converti la stringa in una lista con Parole(str, "")
- Sostituisci tutti i valori che non ti interessano con una stringa vuota (valore mancante) utilizzando Sostituisci
- Utilizzare Loc NonMissing per trovare indici di valori non mancanti
Names Default To Here(1);
a = "·cgaagt··a···········";
b = "··t·a·············c··";
c = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "··t·a·············c··";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
//As List(Loc Nonmissing(list_of_chars)) = {2, 3, 4, 5, 6, 7, 10};
//As List(Loc Nonmissing(list_of_chars)) = {3, 5, 19};
//As List(Loc Nonmissing(list_of_chars)) = {};