Estrarre numeri da stringhe di dimensioni diverseHo una colonna di stringhe con numeri incorporati. So come determinare se queste stringhe contengono il testo corretto che sto cercando, ma non come estrarre i valori che vengono dopo ciascuno di questi. Se le dimensioni della stringa fossero uguali, potrei semplicemente utilizzare la funzione munger in base alla posizione, ma ciò non può essere fatto poiché la dimensione della stringa non è coerente.
Ad esempio "La correzione in è abcde +0.2, c'è più testo qui fghij -1."
Voglio interrogare "abcde" e "fghij" ed estrarre i rispettivi valori +0.2 e -1 nello spazio subito dopo la comparsa delle stringhe. Di solito c'è uno spazio seguito da +/- e un numero (numeri interi e decimali fino a una cifra decimale come mostrato sopra).
Re: Estrarre numeri da stringhe di dimensioni diverseAncora un altro modo: prova la funzione delle parole.Questa è la formula della colonna:
look_for = {"abcde", "fghij", "klmno"};
wlist = Words( :Column 1, " " );
one_num = .;
For( i = 1, i <= N Items( look_for ), i++,
one_word = look_for[i];
f = Contains( wlist, one_word );
If( f,
one_num = Num( wlist[f + 1] );
Break();
);
);
one_num;Re: Estrarre numeri da stringhe di dimensioni diversePuoi anche usare il Regex() funzione con espressioni regolari in una formula di colonna. Questo approccio potrebbe aiutare se l'esempio che hai fornito non mostra tutte le possibili condizioni. Questo è uno script per illustrare l'idea.
Names Default to Here( 1 );
text = "The fix in is abcde +0.2, there is more text here fghij -1.";
answer 1 = Num( Regex( text, ".*abcde ([-+]?\d?.?\d?)", "\1" ) );
answer 2 = Num( Regex( text, ".*fghij ([-+]?\d?.?\d?)", "\1" ) );
Il testo variabile nello script rappresenta la riga corrente per una formula di colonna. Il risposta 1 sarebbe il risultato nella stessa riga della prima nuova colonna dei risultati. Si utilizza l'espressione a destra del segno di uguale per la formula.
Questo esempio è semplice. Bisognerebbe ampliarlo e perfezionarlo se la natura del testo o la prefazione ai numeri fossero più complicate.
Sono inoltre disponibili modelli JMP per la corrispondenza, la restituzione e la sostituzione di stringhe di caratteri.
Re: Estrarre numeri da stringhe di dimensioni diverseDai un'occhiata alla funzione Word().Dati gli esempi che hai fornito, si potrebbe semplicemente cercare la seconda parola nella stringa, basandosi sulla ricerca di uno spazio vuoto
Word(2, , " " )
o
Puoi Contains() per trovare un "+" o "-" e da lì, substr() la stringa per ottenere il valore numerico
In allegato la tabella dei dati sottostante
