@Aam_jmp ,
在您的具体示例中,以下内容可行:
Clear Log(); Clear Globals();
dt = Current Data Table();
dt2 = (dt << Tabulate(
Set Format( N( 9, "Best" ) ),
Add Table(
Column Table( Analysis Columns( :Age, :Height, :Weight ) ),
Column Table( Grouping Columns( :Result ) ),
Row Table( Grouping Columns( :Name ) )
)
)
) << Make Into Data Table;
dt2 << New Column("Result",Character,Nominal,Formula(If(:Fail==1,"Fail",If(:Pass==1,"Pass")))); 
但是,您必须在此方法中每次调整最后一列。
更一般化的方法如下所示:
Clear Log(); Clear Globals();
dt = Current Data Table();
CharValsAA = Associative Array(dt:Result);
Results = CharValsAA << Get Keys;
for(i = 1, i < N Items(Results), i++,
If(!IsMissing(Results[i]),
,
Remove From(Results,i);
);
);
dt2 = (dt << Tabulate(
Set Format( N( 9, "Best" ) ),
Add Table(
Column Table( Analysis Columns( :Age, :Height, :Weight ) ),
Column Table( Grouping Columns( :Result ) ),
Row Table( Grouping Columns( :Name ) )
)
)
) << Make Into Data Table;
nR = N Rows(dt2);
// Short sighted approach
//dt2 << New Column("Result",Character,Nominal,Formula(If(:Fail==1,"Fail",If(:Pass==1,"Pass"))));
// Generalized Approach
dt2 << New Column("Test",Character,Nominal, Set Each Value("a"));
for(i = 1, i <= N Items(Results), i++,
VarName = Results[i];
Eval(Parse(Eval Insert("\[ Temp_^i^ = Loc(dt2:^VarName^ << Get Values) ; ]\" )));
Eval(Parse(Eval Insert("\[ for(r = 1, r <= N Rows(Temp_^i^), r++,
If(Temp_^i^[r] > 0,
dt2:Test[Temp_^i^[r]] = Results[^i^];
);
) ; ]\" )));
);嗯,这是我唯一的目标。为了制作表格,我在列中没有重复的名称。
@Aam_jmp ,
由于数据的性质是字符而不是数字,我想知道这是否可能以直接的方式进行。
我可以想到的一种方法是 - 通过映射字符列的每个唯一值,使用等效数字制表并重新映射到字符值。我不知道你是否想要走那条路并且不必要地使它复杂化。
如果您可以分享您的整个目标,也许可能有更好的方法来处理这个问题?
@uday_guntupalli 我已经尝试过这样做了。这似乎为列中存在的每个值创建了一个新列。我想知道JMP中是否有任何选项可以帮助我获得这样的东西:

@Aam_jmp ,
我认为Tabulate仍然可以工作。如果您有一个新列“Test”和Tabulate,您最终会得到这样的结果:

dt = Current Data Table();
dt1 = (dt << Tabulate(
Set Format( N( 9, "Best" ) ),
Add Table(
Column Table( Analysis Columns( :Age, :Height, :Weight ) ),
Column Table( Grouping Columns( :Test ) ),
Row Table( Grouping Columns( :Name ) )
)
)) << Make Into Data Table
如果这不符合您的要求,请善意显示您的数据(如样本) - 所以我可以看到我在哪里。
@Aam_jmp ,
使用Summarize或制表
dt = Current Data Table();
dt1 = (dt << Tabulate(
Add Table(
Column Table( Analysis Columns( :Age, :Height, :Weight ) ),
Row Table( Grouping Columns( :Name ) )
)
)) << Make Into Data Table