JMP FOR循环使用summarize()和替换<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我碰巧有一个问题。附件是数据表。
基本上,我想根据组的“vol”列计算mean,stddev和count。所以我首先使用“Summarize()”函数编写以下脚本:
总结(vol_g = By(:group),
vol_m_g0 =平均值(:vol_0),
vol_m_g1 =平均值(:vol_1),
vol_m_g2 =平均值(:vol_2),
vol_m_g3 =平均值(:vol_3),
vol_m_g4 =平均值(:vol_4),
vol_m_g5 =平均值(:vol_5),
vol_m_g6 =平均值(:vol_6),
vol_sd_g0 = stddev(:vol_0),
vol_sd_g1 = stddev(:vol_1),
vol_sd_g2 = stddev(:vol_2),
vol_sd_g3 = stddev(:vol_3),
vol_sd_g4 = stddev(:vol_4),
vol_sd_g5 = stddev(:vol_5),
vol_sd_g6 = stddev(:vol_6),
vol_n_g0 =计数(:vol_0),
vol_n_g1 =计数(:vol_1),
vol_n_g2 =计数(:vol_2),
vol_n_g3 =计数(:vol_3),
vol_n_g4 =计数(:vol_4),
vol_n_g5 =计数(:vol_5),
vol_n_g6 =计数(:vol_6)
);
但它太长了,所以我想用下面的“for”循环代替:
对于(i = 0,i <= 6,i ++,
总结(vol_g = By(:group),
Eval(Parse(Eval Insert(“vol_m_g ^ i ^ = Mean(:vol_ ^ i ^)”))),
Eval(Parse(Eval Insert(“volsd_g ^ i ^ = Stddev(:vol_ ^ i ^)”))),
Eval(Parse(Eval Insert(“vol_n_g ^ i ^ = Count(:vol_ ^ i ^)”)))
)
);
但是这个“for loop”版本不起作用。我怎么能修改它才能使它工作?
非常感谢!!
Re:带有summarize()和替换的JMP FOR循环亲爱的MS和伊恩@ JMP ,非常感谢你们的帮助!!我非常感激!/ CH
Re:带有summarize()和替换的JMP FOR循环根据您希望代码的一般程度以及接下来发生的情况,制作摘要表可能更方便:
NamesDefaultToHere ( 1 ) ;
DT1 = 数据表 ( “Raw_data_new” ) ;
//获取dt中所有列的列表
COLS = DT1 << GetColumnNames ( “串” ) ;
//删除我们不想总结的任何列
对于 ( C = NITEMS ( COLS ) , C > = 1 , C - ,- 如果 ( !包含 ( COLS [ C ] , “vol_” ) ,从......中去除 ( COLS , C )) ) ;
//制作一个汇总表
DT2 = DT1 << 摘要 ( 组 ( : 组 ) ,意思 ( EvalList ( COLS )) , STDDEV ( EvalList ( COLS )) , ñ ( EvalList ( COLS ))) ;
Re:带有summarize()和替换的JMP FOR循环如果将整个summarize()表达式构建为字符串,它应该可以工作:
对于 ( 一世 = 0 ,一世 <= 6 ,一世 ++,
EVAL ( 解析 ( 评估插入 ( “总结(vol_g = By(:group),
vol_m_g ^ i ^ =平均值(:vol_ ^ i ^),
volsd_g ^ i ^ = Stddev(:vol_ ^ i ^),
vol_n_g ^ i ^ =计数(:vol_ ^ i ^))“
)))
) ;