如何将列表中的变量分配给数据表中的行?我正在使用具有可变行数的数据表。 我想将我将定义的分类描述分配给名为“原因 1”的新列。 当“名称”列与我定义的任何列表中的任何字符串匹配时,将分配此“原因 1”列。
“名称”行条目将与 ::slitter、::label 或 ::case 列表中的条目完全匹配。
我想为所有行分配不同的原因 1 代码,然后根据每个原因 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"};数据表脚本视窗回复:如何将列表中的变量分配给数据表中的行?无论出于何种原因,循环都没有将变量分配给我想要分配的 5 个列表中的一个特定列表。 “获取行”功能完成了我想要的。
感谢您花时间研究这个解决方案!
- 洛根
回复:如何将列表中的变量分配给数据表中的行?我的想法最初进入循环以完成我想做的事情,但感谢您提供这个替代解决方案!
这完全按照我想要的方式对我的数据进行了分类。
回复:如何将列表中的变量分配给数据表中的行?还有另一种方法是使用获取行的位置和包含。无需循环。
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";回复:如何将列表中的变量分配给数据表中的行?您有几个语法错误,以及一个低效的 For 循环来检查可以使用 Contains() 函数替换的匹配项。我还添加了一种创建新公式列的方法来进行相同的计算。
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"
);
)
);