克隆列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我想克隆数据表中的一列(创建一个新的相同列,但名称除外)。 是否有更时尚(且稳健)的方法来执行此操作,或者我是否需要提取值和所有属性并将它们分配给新列,如下所示:
dt3 =打开( “$SAMPLE_DATA/Cars.jmp” ) ;
// 添加列属性
dt3 :制作<<设置属性(
《价值色彩》 ,
{ “讴歌” = - 13977687 , “奥迪” = - 3780931 , “宝马” = - 4222943 , “别克” = -
13596966 , “卡迪拉克” = - 2211217 , “雪佛兰” = - 10562780 , “克莱斯勒” = -
13156647 , “大发” = - 2078390 , “躲闪” = - 13182413 , “鹰” = - 9549600 ,
“福特” = - 2334147 , “地理” = - 13772446 , “本田” = - 9282864 , “现代” = -
6995852 , “英菲尼迪” = - 1524612 , “五十铃” = - 9458080 , “吉普车” = - 14452073 ,
“雷克萨斯” = - 6391856 , “林肯” = - 2745505 , “马自达” = - 10199751 , “梅赛德斯” =
- 7150697 , “汞” = - 10513726 , “三菱” = - 8381519 , “日产” = -
3502441 , “奥兹莫比尔” = - 3615440 , “标致” = - 13925307 , “普利茅斯” = -
11502354 , “庞蒂亚克” = - 7449196 , “雷诺” = - 9229791 , “萨博” = - 4074344 ,
“土星” = - 13050224 , “斯巴鲁” = - 12565885 , “铃木” = - 2068529 , “丰田” =
- 4494272 , “大众汽车” = - 11824110 , “沃尔沃” = - 8734293 , “尤戈” = - 13849421 }
) <<按值对单元格着色;
// 克隆列
克隆列= dt3 :制作<<获取脚本;
克隆列;
回复:克隆列不,这种解释是完全错误的。
编写 JMP 脚本通常涉及使用内置 JMP 对象,例如数据表、数据列或分析平台。 您可以通过向对象发送指示所需操作的消息来使用这些对象。 两个版本中都显示了一般形式:使用实际的 JMP 函数和使用等效运算符。
Send( object, message );
object << message;
该对象由参考值表示。 消息由名称表示。 这个例子的解释如下:
dt3:Make << Get Script
发送消息获取脚本到称为的对象dt3:制作。 该参考使用以下形式表:列。 对数据表的引用先前存储在变量中dt3 。 对列的引用是按名称进行的。
消息获取脚本可以发送到任何 JMP 对象。 每个对象都会覆盖此消息背后的“getter”方法,以返回重新生成原始对象的脚本。 也就是说,它返回将克隆对象的代码。 因此,您始终可以使用相同的消息来获取任何对象的唯一代码。
回复:克隆列感谢您的解释和快速回复。 我猜想 Get 是 jmp“内置”并运行的脚本的名称。 否则它怎么知道克隆列而不是执行其他操作。 从你的回复中我学到了很多。
回复:克隆列让我们按照表达式的计算顺序来计算。
dt3:Make << Get script
该消息将导致 JMP 返回创建同一列的 JSL 代码。
Eval(dt3:Make << Get script)
JSL 代码经过评估后会生成一个新数据列,该数据列是原始 :Make 列的副本。 Eval() 函数还将返回对该新列的引用。
Eval(dt3:Make << Get script) << set name("Clone");
最后,向新列发送消息以使用对象引用更改新列的名称。
回复:克隆列您好,MS,您介意解释一下这个命令如何克隆 dt 中选定的列吗? Eval(dt3:Make << 获取脚本) << 设置名称("克隆");我意识到这通常不是这里提出的问题,那是 5 年前的事了,但这是我在我使用过的任何编程语言中见过的最不透明的命令。 不过我工作得很好!回复:克隆列谢谢多发性硬化症,
确实,颜色在私人餐桌上用处不大。
问题是我正在编写一个基于启发式过程的算法。这意味着我需要一个脚本,如果我必须自己逐一“读取”数据行并解释它(这是我需要颜色的地方),它就能完成我要做的事情。另一方面,脚本在运行时需要快速,所以我需要在我看到的表和快速运行的表(私有)之间反弹和第四。可视化表和私有表之间的这种转换在跨几个开放表编写脚本时引入了鲁棒性挑战。
罗恩
回复:克隆列我真的不确定在私有表中保留列属性(例如值颜色)有什么价值。如果您只关心数据(对于私有表来说通常如此),则可以使用以下更简单的方法:
dt3 <<新专栏( “制作克隆人” ,公式( dt3 :制作))
回复:克隆列谢谢Dave@Pega-Analytics特克斯尼尔森,
这就是我一直在寻找的。没想到复制一个专栏这么麻烦。
以下是我的最终脚本:
名称默认为此处( 1 ) ;
dt3 =打开( “$SAMPLE_DATA/Cars.jmp” ,私人的) ;
// 克隆到同一个表中
评估(解析( “(dt3<<” ||字符( dt3 :制作<<获取脚本) || ") << 设置名称(\!"克隆\!");" )) ;
// 证明该列已被克隆 - 检查日志
dt3 :克隆<<获取脚本;
关闭( dt3 ,没有保存) ;
最好的,
罗恩
回复:克隆列以下是在前面添加数据表指针的一种方法的完整示例:
Eval(Parse("(dtxxx<<"||char(dt3:Make << 获取脚本)||") << 设置名称(\!"克隆\!");"));
回复:克隆列您可以通过在评估之前编辑脚本变量来使其更加健壮,即在表达式前面添加“dt <<”。
回复:克隆列使用私有表时会出现鲁棒性问题,因为克隆被发送到另一个非私有表。
回复:克隆列谢谢多发性硬化症,
我很惊讶没有 jsl 命令用于复制现有列。此外,如果 dt3 不是活动表,它会在另一个表中创建新列。
回复:克隆列这对我来说看起来非常时尚。 您是否遇到过鲁棒性方面的问题?
如果你不想在变量上浪费内存,可以将其简化为 int OA 线:
评估( dt3 :制作<<获取脚本) <<设置名称( “克隆” ) ;
为了克隆多个列,我会考虑制作其中的子集,重命名列并使用原始数据表进行更新。