我经常需要将一系列公式列从一个表复制到另一个表。尽管“复制多列属性”使该工作变得更容易,但它不包括列名称。由于我的列名称可能很长,因此即使使用剪切和粘贴,执行此操作也很耗时,因为可能有很多这样的列。有没有一种简单的方法可以将属性(公式、名称等)从一个表复制到另一个表?我意识到我可以编写一个脚本来执行此操作,但我想也许我不知道某些选项。
杰里·库珀,
这效果很好。我不知道如何从列面板复制名称。
您说得对,我还没有 JMP15,但希望在我的公司合并完成后获得它。
拍
对不起@pcarroll1 ,
我突然意识到您可能没有使用版本 15 - 我相信这是一个新功能。
您可以在以前的版本中执行您想要的操作,尽管正如您所提到的,列名称没有传达。 然而,有一种方法可以将多个列名从一个表复制到另一个表。
将公式列粘贴到新表中(使用“粘贴多列属性”)后,返回源表(确保公式列仍处于选中状态),然后单击“列”中的标题栏“ 控制板:

键入 Ctrl-C 复制列名称。然后返回到目标表并确保新公式列仍处于选中状态,单击“列”标题,然后键入 Ctrl-V 以粘贴列名称。 显然,您需要确保在执行此操作之前没有更改任一表中列的顺序,否则,您的列将无法正确命名。这是几个额外的步骤,但并不像重新输入一堆长名称那么令人畏惧。
你好@pcarroll1 ,
如果您从源表中选择要复制的公式列,请右键单击其中之一的标题,然后选择“复制列”;然后右键单击目标表数据右侧第一个空列的标题,然后选择“粘贴列” - 我想您会得到您想要的结果。顺便说一句,右键单击目标表中的现有列将在该列之后立即插入新的公式列。
好吧,我冲了那个!
此操作不会将列属性传送到目标。 仅数据值和列属性。
简单的拖动(无需修改键)会将列从一个表移动到另一个表,而不是复制它们。
您还可以右键单击源数据表中选定的数据列,然后选择复制列属性或复制列,但这种方式不会复制值!
所以我想没有一种简单的方法可以一步获得你想要的东西。 如果您有许多列需要重复使用,那么脚本可能是最好的方法。 我试图通过 UI 来说明有很多功能。
我将下面的脚本保存在加载项中使用的“列”菜单中,并一直使用它,无论是在编写脚本以重新创建我在视觉上所做的操作以及将列从一个表复制到另一个表时。选择源表中的列,运行此脚本,选择目标数据表,打开新的脚本窗口,将保存的内容粘贴到剪贴板并单击运行。
Names default to here(1);
ColumnList = Current Data Table() << Get Selected Columns();
ScriptOut = "";
for( i = 1, i <= n items(ColumnList), i++,
ThisScript = Char(Column( Current Data Table(), ColumnList[i] ) << Get Script) || ";";
ThisScript = substitute( ThisScript, ", Set Selected", "" );
ScriptOut = ScriptOut || If( i > 1, "\!N", "" ) || ThisScript;
);
Set clipboard( ScriptOut );
保存到剪贴板的示例代码:
New Column("Sepal length Lagged", Numeric, "Continuous", Format("Best", 10), Formula(Lag(As Column("Sepal length"), 1)));
New Column("Sepal width Lagged", Numeric, "Continuous", Format("Best", 10), Formula(Lag(As Column("Sepal width"), 1)));
New Column("Petal length Lagged", Numeric, "Continuous", Format("Best", 10), Formula(Lag(As Column("Petal length"), 1)));
New Column("Petal width Lagged", Numeric, "Continuous", Format("Best", 10), Formula(Lag(As Column("Petal width"), 1)));