使用变量创建新列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我正在尝试用公式创建一个新列,它由 2 个变量表示,如下所示:
dt << New Column("myNewColumn", Numeric, Continuous, Formula(:Ceiling( XXColumn / Size) * Size));
在哪里:
XXColumn 是 dt 中的列名之一,在列对话框中选择
大小 = 列对话框中的数值
我的尝试产生了一个新列,其公式没有值,因为公式创建如下:
天花板(柱(XXColumn)/尺寸)*尺寸
没有实际分配它。
知道我该怎么做吗?
回复:使用变量创建新列再次感谢你,女士。 我会注意这一点。
回复:使用变量创建新列据我所知,通过阅读您的代码,f_Bin 指的是一个列,而 n_Bin 是一个字符串,这是在这里使用最安全的数据类型。
回复:使用变量创建新列终于奇迹发生了!
这是我使用的代码..
col = dts << New Column("Binning", Numeric, Continuous);
Eval( Parse( Eval Insert( "col << Set Formula(:Ceiling( ^n_Bin^ / ^BinSize^) * ^BinSize^)<< eval 公式" )) );
谢谢 MS 的指导;我使用的 f_bin 和 n_bin 有什么区别?
回复:使用变量创建新列尝试直接使用 n_Bin 而不是 f_Bin:
评价(解析(评估插入( “col << 设置公式(上限(^n_Bin^ / ^BinSize^)* ^BinSize^)” )) ) ;
回复:使用变量创建新列它不起作用。 也许我应该解释一下我在做什么并分享粘贴我的代码。
第 1 步:从“列”对话框收集输入
第 2 步:对所选列 + 默认列使用 Min、Mean、Max 做汇总表
第 3 步:为 Ceiling 创建新列
第 4 步:使用图形生成器进行绘图
代码:
dt0 = 当前数据表();
FN = dt0 << 获取名称;
r = 列对话框(
Bin = ColList( "X, Binning By", Max Col( 1 ) ),
Overlay = ColList( "Group by / Overlay by", Max Col( 1 ) ),
Split = ColList( "Y, Response", 最大 Col( 5 ) ),
Compare = ColList( "X 轴顶部", Max Col( 1 ) ),
HList( "容器大小: ", BinSize = EditNumber( .1 ) ),
);
Bin = r["Bin"];
覆盖 = r["覆盖"];
拆分 = r["拆分"];
比较 = r["比较"];
BinSize = r["BinSize"];
dts = dt0 << 摘要(
组(:固定,列(dt0,覆盖),列(dt0,比较)),
均值(:收益率),
最小值(列(dt0,Bin)),
均值(列(dt0,Bin)),
最大(列(dt0,Bin)),
最小值(列(dt0,拆分[1])),
均值(列(dt0,拆分[1])),
最大(列(dt0,拆分[1])),
最小 ( 列 (dt0,Split[2]) ),
均值(列(dt0,拆分[2])),
最大值 ( 列 (dt0,Split[2]) ),
最小值 ( column(dt0,Split[3]) ),
均值(列(dt0,拆分[3])),
最大值 ( 列(dt0,Split[3]) ),
最小值 ( column(dt0,Split[4]) ),
平均值(列(dt0,拆分[4])),
最大值 ( 列(dt0,Split[4]) ),
最小 ( 列 (dt0,Split[5]) ),
均值(列(dt0,拆分[5])),
最大值 ( 列 (dt0,Split[5]) ),
统计列名格式(“列统计”),
);
dts << 设置名称(FN || “摘要”);
n_Bin = Bin[1]||"均值";
f_Bin = Column(dts, n_Bin);
col = dts << New Column("Binning", Numeric, Continuous);
Eval( Parse( Eval Insert( "col << Set Formula(Ceiling( ^f_Bin^ / ^BinSize^) * ^BinSize^)" )) );
回复:使用变量创建新列不。据我所知,评估公式应该是等价的。
尝试将新列分开并将公式设置为单独的表达式:
dt =打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
列=列对话框(
列1 =列表( “X” ,最大科尔( 1个) ,数据类型(数字) ) ,
列2 =列表( “是” ,最大科尔( 1个) ,数据类型(数字) )
) ;
XX专栏=列[ “第一列” ][ 1个] <<取名;
尺寸=列[ “第二列” ][ 1个] <<取名;
山口= dt <<新建专栏( “我的新专栏” ,数字,连续的) ;
评价(解析(评估插入( “col << 设置公式(天花板(^XXColumn^ / ^Size^)* ^Size^)” ) ) ) ;
山口<<评估公式;
回复:使用变量创建新列它不工作。 结果还是一样。
在 JSL 中,应用按钮 == ?你知道吗?
回复:使用变量创建新列尝试 <
评价(解析(评估插入( "dt << 新列(\!"myNewColumn\!", 数值、连续、公式(上限(^XXColumn^ / ^Size^)* ^Size^),< ) ) ) ;
回复:使用变量创建新列我的是 JMP8.0.0 Windows
有或没有它仍然一样。 T_T
回复:使用变量创建新列不,这不是预期的。 对我来说(JMP 10 for Mac)无需点击“应用”即可运行。 在“天花板...”之前有一个无意的冒号,它保留在您的原始代码中(我现在已经在上面编辑了我的代码)。 也许它有助于删除它。
回复:使用变量创建新列谢谢女士。
使用正确公式创建的新列。 但是,行是空的。 我需要转到 UI 上的公式部分,然后单击“应用”,然后只显示值提示。
是预期的吗?
回复:使用变量创建新列公式中的变量在创建时不会计算,因此应按字面意思表示。 规避这种情况的一种方法是操纵和解析字符串。
例子:
dt =打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
列=列对话框(列1 =列表( “X” ,最大科尔( 1个) ,数据类型(数字) ) ,列2 =列表( “是” ,最大科尔( 1个) , ,数据类型(数字) ) ) ;
XX专栏=列[ “第一列” ][ 1个] <<取名;
尺寸=列[ “第二列” ][ 1个] <<取名;
评价(解析(评估插入( "dt << 新列(\!"myNewColumn\!", 数值、连续、公式(上限(^XXColumn^ / ^Size^)* ^Size^))” ) ) ) ;