智能列處理<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />伙計們,
你如何以智能方式處理列?
假設我有一個腳本和一個表。
腳本在其中創建了一些列。
當我處理腳本時,我在桌面上運行了很多次。當腳本創建列時,它最終會創建許多具有相同名稱但不同編號的列。如果我稍後在腳本中按名稱引用創建的列,它將引用舊列(如“新列”,但不是“新列23”)。
處理它的方法是在實際創建之前刪除具有該名稱的列。首次在新鮮表上使用該腳本時出現問題 - 當沒有要刪除的列時....
無論如何,您如何實現智能色譜柱的添加?
有些人喜歡:
我想用這個名字創建一個新列。是否有任何具有此名稱或名稱的列是此名稱和數字(列出的列)?如果是,則刪除它們並創建我的列。如果沒有這樣的列,只需創建一個具有此名稱的新列...
回复:智能列處理哦,這很簡單:
DT = 打開 ( “$ sample_data \ Big Class.jmp” ) ;
NEW_COLUMN = “BMI” ;
新配方 = “7 *:重量/:身高/:身高” ;
SmartColumn = 功能 ({ NEW_COLUMN ,新配方 } ,
// -----啟動SmartColumn
expr_missing = 評估插入 ( “col = dt <<新列(new_column,Formula(^ new_formula ^));” ) ;
expr_exists = 評估插入 ( “col = Column(new_column)<< Set Formula(^ new_formula ^)<< EvalFormula;” ) ;
如果 ( 不見了 ( 是可編寫腳本的 ( 嘗試 ( 柱 ( NEW_COLUMN ) ) ) ) ,
EVAL ( 解析 ( expr_missing )) ;
, EVAL ( 解析 ( expr_exists )) ;
) ;
// - 結束SmartColumn
) ;
SmartColumn ( NEW_COLUMN ,新配方 ) ;
回复:智能列處理好吧,我想我已經釘了它。
如果作為函數編寫,它將只是添加列的智能替代。
它將採用列名稱,所需的公式,並且,如果存在具有該名稱的列,則更新公式並評估它,如果它不存在 - 創建並設置公式。如果該列在其他公式中的其他位置引用,則沒有問題。
有人可以幫我把它寫成一個隨時可用的公式嗎?
稍後我會添加其他列屬性作為函數的參數。
DT = 打開 ( “$ sample_data \ Big Class.jmp” ) ;
NEW_COLUMN = “BMI” ;
新配方 = “700 *:重量/:高度/:高度” ;
// -----啟動SmartColumn
expr_missing = 評估插入 ( “col = dt <<新列(new_column,Formula(^ new_formula ^));” ) ;
expr_exists = 評估插入 ( “col = Column(new_column)<< Set Formula(^ new_formula ^)<< EvalFormula;” ) ;
如果 ( 不見了 ( 是可編寫腳本的 ( 嘗試 ( 柱 ( NEW_COLUMN ) ) ) ) ,
EVAL ( 解析 ( expr_missing )) ; ,
EVAL ( 解析 ( expr_exists )) ;
) ;
// - 結束SmartColumn
回复:智能列處理我發給你的代碼中遺失了“,”的錯誤。 我為此道歉。
我的意圖是使用代碼,為您提供一種檢測給定列是否存在的方法。
如果您創建的列具有使用您要刪除的列的公式,則打破該依賴關係的最簡單方法是將公式中指向您要刪除的列的值轉換為實際值值,而不是基於公式的值。 要做的就是從列中刪除公式,JMP會將值轉換為實際數據。 完成此操作後,可以刪除原始列。
名稱默認為此處 ( 1 );
dt = 打開 ( “$ SAMPLE_DATA \ big class.jmp” );
//使用公式創建新列
dt << 新欄目 ( “比” ,式(:身高/體重));
//刪除公式屬性和列中的數據
//轉換為實際值,而不是真實值
dt:比率<< 刪除屬性 ( “式” );
回复:智能列處理實際上,我會把它拿回來。如果在其他列的公式中引用了列,則不允許刪除列。
還有其他方法嗎?
甚至可以重新排列數據或更改列的公式,其他列在其公式中有嗎?
回复:智能列處理如果你在第二個“dt”之前加上“,”就行了。
而且,你不要在“Try()”中使用“Throw()”?
回复:智能列處理這是我使用的:
If(try(列(dt,“<列名>”)<<獲取名稱,“”)!=“”dt <<刪除列(“<列名>”));