Ricerca di un valore in un elencoCIAO,
Ho un elenco che ho creato da una stringa delimitata. Quella stringa ha questo aspetto: (numero)|(nome)|(numero)|(nome)|(numero).... ecc. Quello che ho fatto è prendere quella stringa e analizzarla dal delimitatore ('|'). Ho quindi preso quell'elenco di tutti i valori e ho creato un nuovo elenco solo dei "nomi" e ho creato nuove colonne con esso. Il problema che ho riscontrato è quando analizzo la stringa e la inserisco in ogni colonna. Perché non tutte le stringhe in ogni riga iniziano con lo stesso valore. Ho dovuto ottenere tutti i "nomi" da due righe di dati. Quindi la prima riga, la terza riga, la quinta riga, ecc. Dovrebbero essere le stesse, ma su quale "nome" finiscono le loro stringhe è diverso. Successivamente, ogni seconda, quarta, sesta, ecc. riga inizia con un "nome" diverso (dove le righe dispari si erano interrotte). L'elenco dei nomi che ottengo per creare le colonne è composto da tutti i nomi che esistono, ma voglio poter inserire tutti i numeri nelle rispettive colonne.
Parte dello script che ho usato per analizzare tutti i dati è:
// Ottieni tutti i nomi dei pin
Lista = {};
lista = {};
lista2 = {};
// Scorri le prime righe di :Test_Result per ottenere i nomi dei pin
lista = parole(colonna(dt4,"Risultato_Test")[1], "|");
lista2 = parole(colonna(dt4,"Risultato_Test")[2], "|");
// Il primo valore nella stringa è un'informazione inutile, quindi rimuovila
lista2 = Rimuovi(lista2,1);
one_test_result_list = concat(lista,lista2);
// Ottieni tutti i nomi dei pin che iniziano con il secondo valore
For(i = 1, i <= nitems(one_test_result_list)/2, i++,
Assegna(Lista , one_test_result_list[i*2]);
);
Non ho idea di come farlo. Perché il "numero" che segue ogni "nome" nella stringa è il valore che corrisponde a quel nome. Quindi, se vedo quel nome, devo inserire il valore successivo nella colonna di quel nome.
Grazie mille per qualsiasi aiuto!
Oggetto: Ricerca di un valore in un elenco<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bella gestione dei nomi di colonna che non sono noti in anticipo.
Oggetto: Ricerca di un valore in un elencodt = Nuova Tavola ( "Esempio" , Aggiungi righe ( 4 ) ,
Nuova Colonna ( "Dati grezzi" , Carattere , Nominale ,
Imposta valori (
{ "1|faccia|3|Spock|4|cavalluccio marino|5" , "1|faccia|2|Shatner|3|Spock|5" ,
"1|faccia|2|Shatner|3|Spock|4|cavalluccio marino|5" ,
"1|Shatner|3|Spock|4|cavalluccio marino|5" }
)
)
) ;
col_names = dt << ottenere i nomi delle colonne ( corda ) ;
per ( io = 1 , io <= nrow ( dt ) , io ++,
elenco di parole = parole ( dt : dati grezzi [ io ] , "|" ) ;
per ( K = 2 , K <= articoli ( elenco di parole ) , K = K + 2 ,
una_col = elenco di parole [ K ] ;
uno_num = elenco di parole [ K + 1 ] ;
Se ( ! contiene ( col_names , una_col ) ,
dt << nuova colonna ( una_col , carattere , nominale ) ;
inserire ( col_names , una_col ) ;
) ;
colonna ( dt , una_col )[ io ] = uno_num ;
) ;
) ;
Oggetto: Ricerca di un valore in un elencoGrazie Craig! È proprio quello che sto cercando! Funziona perfettamente!
Oggetto: Ricerca di un valore in un elencoNon sono nemmeno sicuro di rispondere alla domanda giusta.Forse questo aiuterà:
dt = New Table( "Untitled",New Column( "dogs"),New Column( "cats"),New Column( "mice"),New Column( "horses"));
load = function({txt},
dt << addrow(1);
list=words(txt,"|");
for(i=1,i
columnName = list; i=i+1;
columnValue = list; i=i+1;
column(dt,columnName)[] = num(columnValue);
)
);
load("mice|3|horses|7");
load("cats|3|mice|9");

La riga 1 crea una tabella di dati modello e presuppone che tu conosca tutti i possibili nomi di colonna.La riga 2 inizia una funzione utente che accetta un singolo argomento, txt.Le righe da 3 a 10 sono la funzione: aggiungi una riga alla tabella, crea un elenco dal testo, scorri l'elenco due elementi alla volta, ottieni un nome, ottieni un valore.La riga 8 crea una colonna dal nome di un carattere e usa il vuoto [ ] per inserire un valore nella riga corrente.Le righe 11 e 12 sono esempi di chiamate alla funzione.
Oggetto: Ricerca di un valore in un elencoQuesto è vicino! Ho già il codice che analizza i dati e creo un nuovo elenco con solo i nomi. Quello che cerco davvero è che dopo aver creato quelle nuove colonne, devo popolarle con tutti i numeri. Poiché il numero che segue ogni nome è il valore per quel nome, voglio solo cercare il nome nell'elenco e inserire il valore successivo in quella colonna. Un po' così:
(Supponiamo che queste siano colonne): faccia | Shatner | Spok | Cavalluccio marino
2 | 3 | 4 | 5
Poiché il primo numero per me è inutile, lo ignoro, ma i numeri che seguono il nome sono i valori che mi interessano. Ma, supponiamo che manchi uno di questi valori:
str = "1|Shatner|3|Spock|4|cavalluccio marino|5" ;
Ho ancora tutte le colonne originali, ma in alcune righe della mia tabella di dati potrebbe mancare un valore nel mezzo o all'inizio, voglio che cerchi nell'elenco e salti i valori mancanti:
(Supponiamo che queste siano colonne): faccia | Shatner | Spok | Cavalluccio marino
| 3 | 4 | 5
Non sono sicuro di quanto sia possibile, ma non tutte le righe iniziano con lo stesso valore. Ma dovrebbe avere ogni valore dopo aver trovato il primo. Quindi tutto ciò di cui ho veramente bisogno è trovare a quale colonna appartiene il primo valore, quindi riempire tutte le colonne successive.
Grazie!
Oggetto: Ricerca di un valore in un elencoNon sono sicuro di averti capito, ma sembra che tu voglia solo farlo?
str = "1|'faccia'|2|Shatner|3|Spock|4|cavalluccio marino" ;
elenco = parole ( str , "|" ) ;
N = articoli ( elenco ) / 2 ;
indice = 1 :: N ;
pareggia = indice * 2 ;
nomi = elenco [ pareggia ] ;
O forse array associativi?