迭代問題:數據過濾和文件保存命名<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我想知道如何設置一個代碼,根據特定的數據過濾器迭代運行分析,然後重新分析新的數據過濾器。數據過濾器設置為基於列中存在1或0來排除行,並且列按順序排列。這是一個示例腳本:
DT = 打開 ( “Hyperspectral_DataCleanedOrdered.jmp” ) ;
DT << 數據過濾器 (
模式 ( 包括 ( 1 )) ,
逆 ,
添加過濾器 (
列 ( Rand001 ) ,
哪裡 ( : Rand001 > = 0.875 & : Rand001 <= 1 )
) ,
) ;
doDiscriminant =
EXPR (
DA = DT << 判別 (
X ( : 網站類型 ) ,
ÿ (
:
: 名稱 ( “366” ) ,
: 名稱 ( “367” ) ,
: 名稱 ( “368” ) ,
: 名稱 ( “369” ) ,
: 名稱 ( “370” ) ,
: 名稱 ( “371” ) ,
: 名稱 ( “372” ) ,
: 名稱 ( “373” ) ,
: 名稱 ( “374” ) ,
: 名稱 ( “375” ) ,
: 名稱 ( “376” ) ,
: 名稱 ( “377” ) ,
: 名稱 ( “378” ) ,
: 名稱 ( “379” ) ,
: 名稱 ( “380” ) ,
: 名稱 ( “381” ) ,
: 名稱 ( “382” ) ,
)
) ;
對於 ( 一世 = 1 ,一世 <= 10 ,一世 ++,
doDiscriminant ;
DA << StepwiseVariableSelection ;
對於 ( ķ = 1 , ķ <= 一世 , ķ ++, DA << 向前一步 ) ;
DA << applyThisModel ;
daRep = DA << 報告 ;
daRep [ “得分摘要” ] << 選擇 ;
daRep [ “得分摘要” ] << 日誌 ( “測試1” ) ;
當前期刊 () << 附加 ( 文本框 ( “測試1” )) ;
daRep << 關閉窗口 ;
) ;
當前期刊 () << 保存期刊 ( “Rand001” ) [理想情況下,此名稱會隨著每次迭代而更新]
對於一定量的逐步變量選擇迭代(10),判別分析是循環的:我想要的是對於數據過濾器的每次迭代,每次1-10次的判別分析迭代。數據過濾器設置為讀取列(Rand001,Rand002,... Rand100),然後根據列的內容排除特定行。
此外,我無法找到一種簡單的方法來迭代地保存日誌/文本文件,並使用更新每次迭代的名稱,這是另一條有用的建議。
謝謝!
Re:迭代問題:數據過濾和文件保存命名最終不確定你的目標是什麼,但這是迭代更新數據過濾器的一種方法:
DT = 打開 ( “$ SAMPLE_DATA \ big class.jmp” ) ;
DT << 新欄目 ( “Rand001” ,式 ( 隨機統一 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand002” ,式 ( 隨機統一 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand003” ,式 ( 隨機統一 ( 0 , 1 ))) ;
//“空白”數據過濾器對象
DF = DT << 數據過濾器 ( 模式 ( 包括 ( 1 )) ,逆 ) ;
對於 ( 一世 = 1 ,一世 <= 3 ,一世 ++,
關口 = 柱 ( “Rand00” || 燒焦 ( 一世 )) ; //動態col變量
DF << 刪除所有 ; //從df中刪除舊列
DF << 添加過濾器 ( 列 ( 關口 ) ,哪裡 ( 關口 > 0.875 )) ; //添加當前列
等待 ( 2 ) ; //延遲僅用於演示目的
) ;
但上面Vince的方法,在分析平台中包含where子句而不是使用數據過濾器可能在這裡更有意義。
Re:迭代問題:數據過濾和文件保存命名文斯,
感謝您提供此信息,我了解我當前的方法可能不是最有效的。如果您建議的代碼的Where段確實將排除了受尊重的Rand列的單元格值為1的行,那麼語法是什麼?這將解決我的問題!
Re:迭代問題:數據過濾和文件保存命名我猜那麼排除的目的是什麼?如果你只是排除所以你每次都得到一個不同的圖表,你可以用Where來做到這一點。
除此之外,你不應該列範圍col。
:col == {1} //將無效
col == 1 //將起作用
Re:迭代問題:數據過濾和文件保存命名感謝您的幫助,它讓我對我的後續步驟有了一些了解。雖然,我正在尋找的是迭代地應用數據過濾器,而不是迭代地運行DA。例如,這是一個示例代碼:
DT = 當前數據表 () ;
關口 = 柱 ( “Rand00” || 燒焦 ( 一世 )) ;
DT = 打開 ( “$ SAMPLE_DATA \ big class.jmp” ) ;
DT << 新欄目 ( “Rand001” ,式 ( 隨機整數 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand002” ,式 ( 隨機整數 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand003” ,式 ( 隨機整數 ( 0 , 1 ))) ;
doDataFilter =
關口 = 柱 ( “Rand00” || 燒焦 ( 一世 )) ;
DT << 數據過濾器 (
模式 ( 包括 ( 1 )) ,
逆 ,
添加過濾器 (
列 ( “Rand00” || 燒焦 ( 一世 )) ,
哪裡 ( : 關口 == { 1 })
//其中(:“Rand00”|| char(i)> 0.875&:“Rand00”|| char(i)= 1)
) ,
) ;
對於 ( 一世 = 1 ,一世 <= 3 ,一世 ++, doDataFilter ;
關口 = 柱 ( “Rand00” || 燒焦 ( 一世 )) ; ) ;
此代碼讀取錯誤:
WHERE子句未正確指定。在訪問或評估'Equal'時,:col == / * ### * / {1} / * ### * /
如何編寫WHERE子句以包含“i”字符,以便過濾器在每次迭代時沿指定行移動?
Re:迭代問題:數據過濾和文件保存命名我不認為我回答了你所有的問題,但這可能會讓你走上正軌。
DT = 打開 ( “$ SAMPLE_DATA \ big class.jmp” ) ;
DT << 新欄目 ( “Rand001” ,式 ( 隨機整數 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand002” ,式 ( 隨機整數 ( 0 , 1 ))) ;
DT << 新欄目 ( “Rand003” ,式 ( 隨機整數 ( 0 , 1 ))) ;
對於 ( 一世 = 1 ,一世 <= 3 ,一世 ++,
關口 = 柱 ( “Rand00” || 燒焦 ( 一世 )) ;
DA = DT << 判別 (
X ( : 性別 ) ,
ÿ ( : 高度 ) ,
哪裡 ( 關口 [ 行 ()] == 1 ) ,
顯示分類計數 ( 1 ) ,
Biplot Ray職位 ( [ 0 , 15.5914608488282 , 1.5 ] )
) ;
DA << 標題 ( “Rand00” || 燒焦 ( 一世 )) ;
DA << 重繪 ;
DA << 日誌 ;
DA << 關閉窗口 () ;
)
我會使用where語句或本地數據過濾器。
希望它至少有點用處。