迭代資料表最快的方法你好,
我們有一張包含數百萬行(影像資料)的 JMP 表,每次操作都非常耗時耗力。然而,我們需要新增一個新列,用於根據其他列進行計算。
對於大型資料集,最快的方法是什麼?目前,我們在列上使用“設定公式”,但應用起來需要很長時間,而且公式在分析過程中必然會多次更改。我們應該使用“獲取值”向量之類的方法嗎?我也看到了「針對每一行」的功能。如果您能提供任何回饋和建議,我將不勝感激。自動化和腳本基本資料分析與建模回覆:迭代資料表最快的方法很多時候,放棄傳統的逐行 JSL,轉而使用矩陣運算,可以提高處理速度。不過,如果您能提供一個實際使用的公式範例,那就更好了。
回覆:迭代資料表最快的方法你好,
感謝您的回覆。
補充更多上下文:下面是一個腳本,其中包含我使用的公式範例。根據影像上的 X/Y 座標,我將其劃分為區域,實際拍攝時總共劃分了 20 個區域。如果區域劃分不正確,我會修改公式,這就是為什麼我說我們會經常使用固定公式。
dt = New Table( "Reprex",
Add Rows( 1000000 ),
New Column( "X", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) ),
New Column( "Y", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) )
);
R_debut_X = 10;
largeur = 50;
ecart_X = 5;
debut_Y = 20;
hauteur = 30;
ecart_Y = 5;
// Slow way: row formula
dt << New Column( "Zone_slow", Character,
Formula(
If( R_debut_X < :X <= R_debut_X + largeur & debut_Y < :Y <= debut_Y + hauteur, "Zone 1",
R_debut_X + largeur + ecart_X < :X <= R_debut_X + 2*largeur + ecart_X & debut_Y < :Y <= debut_Y + hauteur, "Zone 2",
"Other"
)
)
);
回覆:迭代資料表最快的方法@txnelson說得對,矩陣或許能提高速度。確保你使用的是<
dt = New Table( "Reprex",
Add Rows( 1000000 ),
New Column( "X", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) ),
New Column( "Y", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) )
);
R_debut_X = 10;
largeur = 50;
ecart_X = 5;
debut_Y = 20;
hauteur = 30;
ecart_Y = 5;
start = hptime();
// Slow way: row formula
dt << New Column( "Zone_slow", Character,
Formula(
If( R_debut_X < :X <= R_debut_X + largeur & debut_Y < :Y <= debut_Y + hauteur, "Zone 1",
R_debut_X + largeur + ecart_X < :X <= R_debut_X + 2*largeur + ecart_X & debut_Y < :Y <= debut_Y + hauteur, "Zone 2",
"Other"
)
)
);
dt<
<RUNFORMULAS></RUNFORMULAS>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/83489iE50BBC18E746B0D5/Craige_Hales_0-1758807317326.png" role="button" title="Craige_Hales_0-1758807317326.png" alt="Craige_Hales_0-1758807317326.png" /></span></SPAN></SPAN></P> <BR /> <P>結果值是使用 cmatxy1,2 中的 0 或 1 真值來建構 other、zone1、zone2 的 0、1 或 2 值。如果有必要的話,您可以折疊一些矩陣語句以使其更快。</P> <BR />
回覆:迭代資料表最快的方法非常感謝,現在速度快多了!