Comment assignez-vous une variable d'une liste à une ligne dans une table de données ?Je travaille avec une table de données qui a un nombre variable de lignes. Je souhaite attribuer une description catégorique que je définirai à une nouvelle colonne appelée "Raison 1". Cette colonne "Raison 1" sera attribuée lorsque la colonne "Nom" correspond à l'une des chaînes de l'une des listes que j'ai définies.
L'entrée de ligne 'Name' correspondra exactement à une entrée dans les listes ::slitter, ::label ou ::case.
Je souhaite attribuer les différents codes de raison 1 à toutes les lignes, puis analyser les données en fonction de chaque raison 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"};Tableau de donnéesScriptles fenêtresRe : Comment assigner une variable d'une liste à une ligne dans une table de données ?Vous avez quelques erreurs de syntaxe et une boucle For inefficace pour vérifier les correspondances qui peuvent être remplacées à l'aide d'une fonction Contient().J'ai également ajouté une méthode pour créer la nouvelle colonne de formule pour faire le même calcul.
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 : Comment assigner une variable d'une liste à une ligne dans une table de données ?Il existe une autre méthode qui utilise get rows where et contains.Aucune boucle requise.
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 : Comment assigner une variable d'une liste à une ligne dans une table de données ?Mon esprit a d'abord fait une boucle pour terminer ce que je voulais faire, mais merci pour cette solution alternative !
Cela a classé mes données exactement comme je le voulais.