Come si assegna una variabile da un elenco a una riga in una tabella di dati?Sto lavorando con una tabella di dati che ha un numero variabile di righe. Voglio assegnare una descrizione categorica che definirò a una nuova colonna chiamata "Motivo 1". Questa colonna "Motivo 1" verrà assegnata quando la colonna "Nome" corrisponde a una qualsiasi delle stringhe in uno qualsiasi degli elenchi che ho definito.
La voce della riga 'Nome' corrisponderà esattamente a una voce negli elenchi ::slitter, ::label o ::case.
Voglio assegnare i diversi codici motivo 1 a tutte le righe e quindi analizzare i dati in base a ciascun motivo 1.
dt1 << New Column("Reason 1", Character, "Nominal");
Nrows = N Rows(dt1);
For( i =1, i<=Nrows, i++
For( j=1, j<= N items( ::slitter ), j++,
If(:Name(i) == Eval(slitter(j)), :Reason 1(i) = "Slitter");
);
);
// %Slitter% description codes
slitter = {"TM2300-370",
"TM2300-380",
"TM2300-385",
"TM2300-390",
"TM2300-395",
"TM2300-400"};<BR /><BR />// %Label% description codes (8)<BR />::label = {"TM2300-020",<BR />"TM2300-025",<BR />"TM2300-070",<BR />"TM2300-075",<BR />"TM2300-080",<BR />"TM2300-085",<BR />"TM2300-090",<BR />"TM2300-095"};<BR /><BR />//%Case% description codes (7)<BR />::case = {"TM2300-030",<BR />"TM2300-035",<BR />"TM2300-040",<BR />"TM2300-045",<BR />"TM2300-050",<BR />"TM2300-055",<BR />"TM2300-060"};Tabella datiScriptingfinestreRi: Come si assegna una variabile da un elenco a una riga in una tabella di dati?Per qualsiasi motivo, il ciclo non assegnava la variabile a un particolare elenco su 5 elenchi che volevo assegnare. La funzione "Ottieni righe dove" ha realizzato ciò che volevo.
Grazie per aver dedicato del tempo a questa soluzione!
- Logano
Ri: Come si assegna una variabile da un elenco a una riga in una tabella di dati?La mia mente inizialmente è andata in tilt per completare ciò che volevo fare, ma grazie per questa soluzione alternativa!
Questo ha classificato i miei dati esattamente come volevo.
Ri: Come si assegna una variabile da un elenco a una riga in una tabella di dati?C'è un altro modo che usa get rows where e contains.Nessun ciclo richiesto.
dt = data table("Sample Data Set-1");
// %Slitter% description codes
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"};
match_rows = dt << get rows where(contains(slitter, :Name));
dt:Reason 1[match_rows] = "Slitter";Ri: Come si assegna una variabile da un elenco a una riga in una tabella di dati?Hai un paio di errori di sintassi e un ciclo For inefficiente per verificare le corrispondenze che possono essere sostituite utilizzando una funzione Contains ().Ho anche aggiunto un metodo per creare la nuova colonna formula per eseguire lo stesso calcolo.
Names Default To Here( 1 );
dt1=current data table();
dt1 << New Column( "Reason 1", Character, "Nominal" );
// %Slitter% description codes
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"};
Nrows = N Rows( dt1 );
For( i = 1, i <= Nrows, i++,
If( Contains( slitter, :Name[i] ) == 1,
:Reason 1[i] = "Slitter"
)
);
// or
dt1 << New Column( "Reason 2",
character,
formula(
If( Row() == 1,
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"}
);
If( Contains( slitter, :Name ) == 1,
:Reason 2 = "Slitter"
);
)
);