你好,
我正在循環遍歷各列,為每列建立新的平均值、標準差和 CV 列。 我有下面的腳本,它適用於全域列統計數據,但是當我嘗試按群組新增時(就像我在平均值列中所做的那樣),公式失敗了。
我意識到我可以使用更新回主表的總表來完成相同的任務。
謝謝!
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp");
New Column("Old",
Character,
Formula(If(:age>=14,"Old","Young"))
);
colnames = dt << get column names( numeric,string );
For( i = 1, i <= N Items( colnames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( colnames[i] ) || " mean",
Numeric,
Formula(
Col Mean(Column(__colname__),:old)
)
);
New Column( Char( colnames[i] ) || " STD DEV",
Numeric,
Formula(
Col Std Dev(Column(__colname__))
)
);
New Column( Char( colnames[i] ) || " CV%",
Numeric,
Format( "Percent", 2 ),
Formula(
Col Std Dev(Column(__colname__))/
Col Mean(Column(__colname__))
)
);
),
Expr(__colname__),colnames[i]
)
)
);JMP 似乎在僅使用 Column() 函數時有問題。然而,As Column() 函數修正了這個問題。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "Old", Character, Formula( If( :age >= 14, "Old", "Young" ) ) );
colnames = dt << get column names( numeric, string );
For( i = 1, i <= N Items( colnames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( colnames[i] ) || " mean",
Numeric,
Formula( Col Mean( as Column( __colname__ ), :old ) )
);
New Column( Char( colnames[i] ) || " STD DEV",
Numeric,
Formula( Col Std Dev( as Column( __colname__ ) ) )
);
New Column( Char( colnames[i] ) || " CV%",
Numeric,
Format( "Percent", 2 ),
Formula( Col Std Dev( as Column( __colname__ ) ) / Col Mean( as Column( __colname__ ) ) )
);
),
Expr( __colname__ ), colnames[i]
)
)
);
由於您使用的是 Substitute() 函數,因此您也可以刪除 As Column() 或 Column() 函數,並將 __colname__ 替換為 :theactualcolumnname 的實際列參考。 見下文
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "Old", Character, Formula( If( :age >= 14, "Old", "Young" ) ) );
colnames = dt << get column names( numeric, string );
For( i = 1, i <= N Items( colnames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( colnames[i] ) || " mean",
Numeric,
Formula( Col Mean( __colname__ , :old ) )
);
New Column( Char( colnames[i] ) || " STD DEV",
Numeric,
Formula( Col Std Dev( __colname__ ) )
);
New Column( Char( colnames[i] ) || " CV%",
Numeric,
Format( "Percent", 2 ),
Formula( Col Std Dev( __colname__ ) / Col Mean( __colname__ ) )
);
),
Expr( __colname__ ), Parse( ":" || colnames[i] )
)
)
);