回复:如何使用列表中的列名创建列公式您遇到了未正确处理具有多个列名的行的问题。这是我尝试解决您的问题。

Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
current data table(dt);
// Build execution string
sumString = "";
for each row(
if(:Yield SummaryBins != "",
i=1;
while(word(i,:Yield SummaryBins,"[] ") != "",
sumString = sumString || ", :\!"" || word(i,:Yield SummaryBins,"[] ") || "\!"n";
i++;
)
)
);
// Remove first comma
sumString = substr(sumString, 1);
// Execute new column string
eval(parse("dt2<<NEW column=""></NEW>回复:如何使用列表中的列名创建列公式谢谢吉姆。
您的代码有效。 我想为每个组创建单独的列。
例如:在下面的例子中,有两组 Opens 和 Shorts,其中包含各自的列名。
我想要两个不同的列,其中的公式对各自的值求和
摘要表中的第 1 列(列 (39, 41, 43) 的总和)和列 2(列 (38, 40, 42) 的总和)

回复:如何使用列表中的列名创建列公式这只是扩展我提供的代码的问题。
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Build execution string
openString = shortsString = "";
For Each Row(
If( :Yield SummaryBins != "",
If( :Yield SummaryLabel == "Opens",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
openString = openString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
If( :Yield SummaryLabel == "Shorts",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
shortsString = shortsString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
)
);
// Remove first comma
openString = Substr( openString, 1 );
shortsString = Substr( shortsString, 1 );
// Execute new column strings
Eval( Parse( "dt2<<NEW column=""></NEW>
请花时间研究提供的代码,如果您不了解代码的工作原理,请回答其他问题。
回复:如何使用列表中的列名创建列公式当然可以……有什么规定?回复:如何使用列表中的列名创建列公式你好@txnelson ,你能建议吗?
回复:如何使用列表中的列名创建列公式我读到你的描述是你的规则是为条件表中的每一行创建一个新列,该列在 Yield SummaryLabel 列中有一个值。
因此,我建议您通读条件表中的每一行,当您在 Yield SummaryLabel 列中找到具有值的行时,您可以创建新列。
在一种情况下,您遇到了问题。第 14 行指定了 SYL_Yield,Yield SummaryBins 的值为 1。没有名为“1”的列。

回复:如何使用列表中的列名创建列公式可以排除第 14 行。 你能分享代码吗? 我只是想参考并获得一个想法
回复:如何使用列表中的列名创建列公式Names Default To Here( 1 );
dt = Data Table( "Condition table" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Rule: Create a new Summary Column for each row in the Condition Table
// that has a value in the Yield SummaryLabel column
For( i = 1, i <= N Rows( dt ), i++,
If( dt:Yield SummaryLabel[i] != "",
theString = "";
k = 1;
While( Word( k, dt:Yield SummaryBins[i], "[] " ) != "",
theString = theString || ", :\!"" || Word(
k,
dt:Yield SummaryBins[i],
"[] "
) || "\!"n";
k++;
);
theString = Substr( theString, 1 );
Eval(
Parse(
"dt2<<NEW column=""></NEW>
社区成员因帮助其他成员而获得的唯一补偿是来自他们帮助的成员变得更加自给自足的满足感。剪切和粘贴别人的工作代码并不是实现自给自足的好方法。
回复:如何使用列表中的列名创建列公式@txnelson谢谢你。 非常感激。
可以动态完成吗? 我遇到过超过 2 个组的情况。 编写单独的字符串执行函数会很乏味。
我在下面附上了参考表
回复:如何使用列表中的列名创建列公式@txnelson规则与前面的示例类似。
使用对各个 bin 求和的公式创建每个单独的 Column 组。
我想在 Soft Bin Summary 表中创建一个列,并在公式中添加所有列名 bin。
例如:使用公式 (Sum( Column ("52", "42","49") )) 创建 IDD Currents 组列,
使用公式创建开放组列(总和(列(“39”,“41”,“43”)))
对产量摘要标签列中的其余标签组也是如此
如何使用列表中的列名创建列公式你好,
我想在第二个 JMP 表中创建一个新列使用一个简单地对列表中包含的列求和的公式(在我已将列名分配给的代码中箱子。
例如:该列表包含列名称“39”、“41”、“43”。 我想在 Soft Bin Summary 表中创建一个新列,并在公式中添加所有这些
我无法弄清楚从列列表 {""} 到对列的引用我做错了什么。
任何帮助深表感谢。
这是我试过的代码
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Try( For Each Row( :Yield SummaryBins = Word( 1, :Yield SummaryBins, "[]" ) ) );
grouplist = dt:Yield SummaryBins << get values;
For( i = N Items( grouplist ), i >= 1, i--,
If( grouplist[i] == "",
Remove From( grouplist, i, 1 ),
));
binss = {}; /// list contaiting bin value
For( i = 1, i <= N Items( grouplist ), i++,
If( Contains( grouplist[i], " " ),
Insert Into( binss, grouplist[i] )
)
);
adad = Words( binss[1], " " );
F = Eval Expr( Sum( Expr( adad ) ) );
/// Something doesn't seem to right in the below loop
For( i = 1, i <= N Items( binss ), i++,
dt2 << New Column( binss[i], "Numeric", "Continuous", Format( "Percent", 12, 2 ), Formula( Name Expr( F ) ) ););
谢谢,
杰克
高级统计建模数据探索和可视化大规模定制质量与工艺工程