創建新列並根據原始列單元格插入公式你好,
我是一個沒有經驗的JMP腳本,我正在嘗試編寫我的第一個大(呃)腳本。 我遇到一部分問題。這是我正在嘗試做的事情:我有各種數據表,我將使用此腳本。我希望腳本能夠查看所有列,不包括第一列(每個數據表的列號和行號都不同),並為表中已存在的每列創建一個新列。我希望每個新列的名稱與每個原始列相同,但最後使用“_code”,並且最好位於表中原始列的旁邊。在每個新列中,我希望公式為if / then語句。如果“A列”在單元格中有文本“<”,則為0,否則為1。
我希望我的解釋是有道理的。 我發布了我的腳本,雖然它似乎在第8行打破,我不知道為什麼。
感謝您的任何幫助!
萊西
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 2, i <= nitems( col_list ), i++,
data_col = ":" || col_list[i];
code_col = col_list[i] || "_Code";
str = evalinsert (
"\[dt << New Colum ("^code_col^", Numeric, Continuous,
Format("Best",12),
Formula(If( Contains( "^code_col^", "<" ),
0,
1
)));
);]\");
eval(parse(str));
);Re:根據原始列單元格創建新列並插入公式是的,我得到了這個工作。非常感謝!
Re:根據原始列單元格創建新列並插入公式:Name()函數旨在處理此問題。 以下是我對您的腳本所做的修改,我相信這將解決問題。 我沒有測試過這個修改,但我認為它會起作用。 如果沒有,你應該能夠看到我正在嘗試做什麼,你應該能夠讓它發揮作用。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code" ,
Expr( __OrigCol__ ), Parse( ":Name(\!"" || col_list[i] || "\!:)" )
)
)
);Re:根據原始列單元格創建新列並插入公式吉姆,嗨,
我去嘗試新數據表上的腳本,我遇到了列名的問題。 我處理環境數據,很多時候分析物名稱(即列名稱)將在名稱中包含符號,例如“ - ”,“[”,“]”,“(”,“)”和/或“ “。當我運行腳本時,它在第一列“3-Methyl-1-butene”上出錯了。 有沒有解決這個問題?
謝謝,
萊西
Re:根據原始列單元格創建新列並插入公式這很棒!謝謝!
我錯了,我在數據表中留下了“第13列”。那隻是我確定我的if語句是否正常工作,當我在網上發佈時我忘了刪除它。所以我剛從我的數據表中刪除了它,在你發送的精彩腳本中將13改為2,然後它就像一個魅力。
非常感謝!
萊西
Re:根據原始列單元格創建新列並插入公式以下是對我們認為滿足您所有需求的代碼的修改。 我必須處理的一個項目是,您開始使用的列(2-13)必須是字符,因此公式不會出錯。 第13列會使腳本出錯,因為它是一個無法更改為字符的公式列,因為只要它運行它的公式,它就會強制列為數字。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);