如何從列中取得與所選標籤相對應的非空行值?我有附件表格的傳入資料。
我想從每列(紅色圓圈)中獲取前三行值,這些值出現在特定標籤上。
以下適用於電流,但不適用於電壓(對於電壓,我得到空值,我明白為什麼)
Stage = "7"; resCol = "Current";
theLSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]]; show (theLSL);
theUSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "USL" ))[1]]; show (theUSL);

自動化和腳本編寫視窗回覆:如何從列中取得與所選標籤相對應的非空行值?您可以使用 IsMissing() 來增加額外的檢查
... & !IsMissing(Column(dt, resCol)[])
回覆:如何從列中取得與所選標籤相對應的非空行值?@jthi謝謝。
回覆:如何從列中取得與所選標籤相對應的非空行值?這是您的 << get rows where 的另一個搜尋條件
dt << get rows where(:TestStage == Stage & :label == "USL" & !Is Missing(Column(dt, resCol)[]))
回覆:如何從列中取得與所選標籤相對應的非空行值?編寫的 JSL 僅傳回第一個符合行的值。儘管
dt << get rows where( :TestStage == Stage & :label == "LSL" )
傳回找到的所有符合行的矩陣,當加入[1]的下標時
(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]
它會傳回找到的第一行的行號,在您的範例中,它會傳回缺失值。
@jthi Jarmo,建議添加進一步的說明以消除缺失值,這會將您的 Get RowsWhere() 更改為
(dt << get rows where( :TestStage == Stage & :label == "LSL" & !IsMissing(Column(dt, resCol) ) )[1]
如果您只是尋找第一個非缺失值,那麼這是一個很好的解決方案。但是,如果您的資料可能包含多行非缺失 LSL 值,那麼您可能不希望找到第一個非缺失值。您可能想要執行一些操作,例如從傳回的所有非缺失行中尋找最大 USL 值或平均 USL 值。你可以做類似的事情
theUSL = dt << get rows where( :TestStage == Stage & :label == "LSL" & !Is Missing( Column( dt, resCol ) ) );
USLMat = [];
For Each( {foundRow, index}, theUSL, USLMat = USLMat || Column( dt, resCol )[index] );
theUSL = Mean( USLMat );
回覆:如何從列中取得與所選標籤相對應的非空行值?我正在嘗試做同樣的事情,就我而言
dt << Get Rows Where(:A == "AAA")
給出一個包含一個元素的列表.
所以我必須使用
:B[(dt << Get Rows Where(:A == "AAA"))[1]]
回覆:如何從列中取得與所選標籤相對應的非空行值?@miguello ,有問題嗎?
回覆:如何從列中取得與所選標籤相對應的非空行值?我猜不會。只是想了解哪種行為是正確的,以及為什麼我和@Neo採用一種方式,而你採取另一種方式?
它給出矩陣還是帶有矩陣的單一元素列表取決於什麼?
回覆:如何從列中取得與所選標籤相對應的非空行值?如果您從 Get RowsWhere() 呼叫中僅傳回 1 行,則沒有任何有意義的差異。