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 categoriale che definirò a una nuova colonna denominata "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 datiSceneggiaturafinestreRe: 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 della 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"
);
)
);Re: Come si assegna una variabile da un elenco a una riga in una tabella di dati?C'è un altro modo che usa get righe dove e contiene.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";Re: Come si assegna una variabile da un elenco a una riga in una tabella di dati?Inizialmente la mia mente è andata in un ciclo per completare ciò che volevo fare, ma grazie per questa soluzione alternativa!
Questo ha classificato i miei dati esattamente come volevo.