<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我想打开一个数据表(使用 Big Class.jmp 作为示例,但想对任何表执行此操作)并为每列创建一个汇总表,返回每列的非缺失值数量(如表以下)。
| N 行 | N(姓名) | N(年龄) | N(性别) | N(高度) | N(重量) |
|---|
| 40 | 40 | 40 | 40 | 40 | 40 |
我尝试了两种不同的方法,但没有成功(我使用的是 JMP 9.0.3 64 位)。
在第一个示例中,我尝试将已解析字符串列表 {N(:name),N(:age),N(:sex),N(:height),N(:weight)} 传递给 Summary()。 但是,当我运行它时,它只创建一个包含 N 行的汇总表。
示例1
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
打开(“$SAMPLE_DATA/Big Class.jmp”);
dt = 当前数据表();
colList = dt<<获取列名();
icols = N 项(colList);
总和列表={};
for(i=1, i<=icols, i++,
插入(sumList, 解析("N(:" || char(colList ) || “)”))
);
summDt = dt<
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
然后,我尝试定义一个表达式并传递一个已解析的字符串(N(:name),N(:age),N(:sex),N(:height),N(:weight))。 然而,当我尝试评估这个表达式时,我得到以下结果......
意想不到的“,”。 可能少了一个“;”或者 ”,”。
第 1 行第 9 列:N(:姓名)►、N(:年龄)、N(:性别)、N(:身高)、N(:体重)
其余被忽略的文本是
例2
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
打开(“$SAMPLE_DATA/Big Class.jmp”);
dt = 当前数据表();
colList = dt<<获取列名();
icols = N 项(colList);
MyExpr = expr(summDt = dt<
for(i=1, i<=icols, i++,
if(i==1, strColumns = "N(:" || char(colList ) || ")", strColumns = strColumns || ", N(:" || char(colList ) || “)”)
);
//绕过上面的检查
//strColumns = "N(:名称)"; //适用于一列,但当我尝试传递多于一列时会抛出错误(即“意外”,”。 可能少了一个“;”或者 ”,”。”)
测试 = Eval Expr(MyExpr);
测试;
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
我一定是在做一些愚蠢的事情。
任何建议/帮助将不胜感激。
谢谢。
这个例子似乎有效并且可能有帮助:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
colList = dt << 获取列名();
dtsum = dt << 摘要(Mean( Eval( colList ) ) );