有沒有一種方法可以按組變量將列列表輸入列均值/標準差/中位數?大家好,
我正在嘗試生成一個新列作為 :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] )
)
);