我不確定在 JMP 14 中復制列的最快方法是什麼。
相同的信息(數據、元數據、公式),但標題不同(例如,列名稱副本)。
此代碼片段將返回當前選定列的名稱
colName = (current data table() << get selected columns)[1];
對於那些使用此功能的人來說僅供參考 - 我一直在定期使用此功能,但已將其掛在較大的數據表(> 100k 行)上。我還沒有徹底調試 - 但我確實發現這里克隆列線程(基本上相同,除了腳本沒有 char() 轉換並且沒有替換 - 我使用表達式設置命名)速度快了約 5 倍,我希望不會在任何導致我掛起的極端情況下死亡。我正在將我的插件切換為使用基於此的東西,並希望它不太可能崩潰。
https://community.jmp.com/t5/Discussions/clone-a-column/td-p/15644
最簡單的方法是使用 eval(:col << Get Script)。您將獲得該列的副本,末尾帶有一個整數,以為其指定一個唯一的名稱。您需要確保要對其執行操作的表是當前表。
這是一個方便的函數,您可以在腳本中使用它,讓您命名生成的新列並指定數據表。唯一必需的參數是第一個參數 colname。您可以指定一個數據表,但否則它將採用 Current Data Table()。如果不指定名稱,則返回原始列名+“-複製”。
Names Default to Here(1);
DupCol = function({colname, new = "", dt = Current Data Table() },
col = Column(dt, colname);
if(IsMissing(new), new = colname||" - Copy");
col_script = char(col << Get Script);
col_script = substitute(col_script, "New Column", "dt << New Column");
col_script = substitute(col_script, colname, new);
eval(parse(col_script));
);
我將使用 Football 示例數據(和 Big Class 來顯示該函數的穩健性)進行說明:
football_dat = Open("$SAMPLE_DATA/Football.jmp");
DupCol("Height"); //Produces copy of Height named "Height - Copy"
DupCol("Height", new = "Height Again"); //Produces copy of Height named "Height Again"
Open("$SAMPLE_DATA/Big Class.jmp"); //just to show robustness since this data table also has a column named "height"
//Different ways to specify the data table if not wanting to assume Current Data Table
DupCol("Height", new = "Height Once More", dt = Data Table("Football") );
DupCol("Height", new = "Height Last Time", dt = football_dat );
從點擊的角度來看,我知道的最短方法仍然是兩步過程。您可以使用典型的 Ctrl+C/Ctrl+V 操作複製/粘貼數據。您可以通過右鍵單擊要復制的列的列標題 > 複製列屬性,右鍵單擊新復制列 > 粘貼列屬性來複製/粘貼元數據(列屬性)。