有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?大家好,
我正在尝试生成一个新列作为 :A 的平均列,按 :B、:C、:D 指定的组。
有没有办法做到这一点 :B, :C,
是一个列表? 我想要这个,所以我可以使用 Col Dialog 来填充它。
如果没有,有没有办法将列表分成参数?
下面的第一行给出了我想要的平均值,而第二行给出了 :A 的总体平均值。
mean= New Column("Mean", Formula(Col Mean(:A, :B, :C,
)));
mean = New Column("Mean", Formula(Col Mean(:A, {:B, :C,
})));
提前致谢。
脚本回复:有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?谢谢大家,这让我朝着正确的方向前进。
还在学习表达式和求值,谢谢你的例子。
回复:有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?当然有。@jthi显示了一种处理它的方法,通过将从对话框中获得的列表元素转换为表达式。或者,由于 JSL 是一种编程语言,它为您提供了解决问题所需的所有结构。鉴于您是 JSL 的新手,我强烈建议您查看脚本指南。这是了解 JSL 的结构和特性的最佳方式。脚本指南可在帮助下拉菜单下的 JMP 文档库中找到。
这是处理该问题的另一种方法,它应该可以满足您的需求
Names Default To Here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = {"height", "Sex", "Age"};
__vals__ = Concat Items( colList, "," );
Eval(
Parse(
Eval Insert(
"dt << New Column( \!"Mean\!",
formula( Col Mean( ^__vals__^) )
)
;"
)
)
);
回复:有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?谢谢吉姆,如果列表的大小不确定,是否有办法做到这一点?
回复:有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?如果您在列表中使用 :name 格式的列,您也可以使用此选项(想法来自在公式中使用列列表)
Names Default To Here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open("$SAMPLE_DATA/big class.jmp");
col_list = {:height, :Sex, :Age};
formula_expr = Name Expr(Substitute(col_list, Expr(List()), Expr(Col Mean())));
Eval(EvalExpr(
dt << New Column("Mean", Formula(Expr(formula_expr)));
));
要使用 Eval、Eval Expr、Expr、Substitute...请参阅使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入另一个表达式
回复:有没有一种方法可以按组变量将列列表输入列均值/标准差/中位数?这是解决此问题的简单方法
Names Default To Here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = {"height", "Sex", "Age"};
Eval(
Substitute(
Expr(
dt << New Column( "Mean",
formula( Col Mean( __one__, __two__, __three__ ) )
)
),
Expr( __one__ ), Parse( ":" || colList[1] ),
Expr( __two__ ), Parse( ":" || colList[2] ),
Expr( __three__ ), Parse( ":" || colList[3] )
)
);