單元格與條件輸出的比較你好,
我正在嘗試創建一個數數基於條件的發生次數,使用下表作為示例。 計數為 1 的條件是列“參數”和“位置”在下一行或兩列中的任何其他位置都重複。 輸出表將具有與原始表中相同的列數據,並添加了 3 列“Count”、“Tool 1”、“Tool 2”(工具數量可以增加到 5)。

該表的輸出如下。 由於第 3 行和第 4 行根據 2 列條件(參數和位置)重複,這將是 1 的計數,因此它再次重複相同的條件,這將是第二次計數,總共 2。 要顯示的行將取決於按日期順序排列的 3 行中的第一行。 最後,工具列也將按日期順序填充(即工具 1(或 E)首先在下午 1:10 出現,然後工具 2(或 F)在下午 2:10 出現)等。

數據表回复:單元格與條件輸出的比較這是一個腳本,可以為您的數據轉換提供良好的開端
Names Default To Here( 1 );
// Create a sample table
dt = New Table( "Sample",
Add Rows( 6 ),
Set Header Height( 46 ),
New Column( "Date/Time",
Numeric,
"Continuous",
Format( "y/m/d h:m", 19 ),
Input Format( "y/m/d h:m" ),
Set Values( [3273127800, 3273124200, 3273142200, 3273138600, 3273152400, 3273149400] )
),
New Column( "Parameter", Character, "Nominal", Set Values( {"A.1", "A.2", "A.3", "A.3", "A.2", "A.3"} ) ),
New Column( "Location", Character, "Nominal", Set Values( {"B.1", "B.2", "B.3", "B.3", "B.1", "B.3"} ) ),
New Column( "Process", Character, "Nominal", Set Values( {"C.1", "C.2", "C.3", "C.3", "C.1", "C.3"} ) ),
New Column( "Tool", Character, "Nominal", Set Values( {"E.", "E", "F", "E", "E", "G"} ), Set Display Width( 43 ) ),
New Column( "Part", Character, "Nominal", Set Values( {"F-1.1", "F-1.2", "F-1.1", "F-1.1", "F-1.1", "F-1.1"} ) )
);
// The calculation script starts here
// Calculate the Counts
dtSum = dt << Summary(
Group( :Parameter, :Location ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Summary" )
);
// Delete rows that have no matches
dtSum << select where( dtSum:N Rows == 1 );
If( N Items( dtSum << get selected rows ) > 0,
dtSum << delete Rows
);
// The count is equal to how many rows, not how many matches so subtract 1 to count the matches
For Each Row(
dtSum:N Rows = dtSum:N Rows - 1;
);
dtSum:N Rows << set name("Count");
// Create a new table from original that contains only the data with matches
dtJoin = dt << Join(
With( dtSum ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :Parameter = :Parameter, :Location = :Location ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Joined" )
);
// Sort the data to set tool usage order
dtJoin << Sort( By( :Parameter, :Location, :"Date/Time"n), Replace Table(1));
// Create a new column for tool order
dtJoin << New Column("Tool Col", character, set each value(
"Tool " || Char( Col Cumulative Sum(1, :Parameter, :Location))
));
// Split the data to the final output for
dtFinal = dtJoin << Split(
Split By( :Tool Col ),
Split( :Tool ),
Group( :Parameter, :Location ),
Output Table( "Final" ),
Sort by Column Property
);
// Clean up
close( dtSum, nosave );
close( dtJoin, nosave );
有關各種平台和功能的文檔記錄在腳本索引和腳本指南中。兩者都在幫助下拉菜單下可用。
回复:單元格與條件輸出的比較你好,
我*認為*我明白你在找什麼,但正如吉姆所說,更多的上下文更好。 以下內容根據您提供的數據生成您描述的輸出,但由於只有 1 行輸出可以繼續……這只是一個猜測。 我假設,根據您提供的輸入和輸出,除了參數和位置之外,過程和部分還用作分組變量(?),並且在數據摘要中 Count 總是比 n Rows 少 1 . 如果不是這種情況,這些很容易在下面的代碼中更改,但同樣......只是一個猜測。
無論如何,試試這個看看它是否是你需要的,如果不是,希望你是一個遠離你想要的東西的快速代碼模型。
乾杯,
布雷迪
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 6 ),
Set Header Height( 46 ),
New Column( "Date/Time",
Numeric,
"Continuous",
Format( "y/m/d h:m", 19 ),
Input Format( "y/m/d h:m" ),
Set Values( [3273127800, 3273124200, 3273142200, 3273138600, 3273152400, 3273149400] )
),
New Column( "Parameter", Character, "Nominal", Set Values( {"A.1", "A.2", "A.3", "A.3", "A.2", "A.3"} ) ),
New Column( "Location", Character, "Nominal", Set Values( {"B.1", "B.2", "B.3", "B.3", "B.1", "B.3"} ) ),
New Column( "Process", Character, "Nominal", Set Values( {"C.1", "C.2", "C.3", "C.3", "C.1", "C.3"} ) ),
New Column( "Tool", Character, "Nominal", Set Values( {"E.", "E", "F", "E", "E", "G"} ), Set Display Width( 43 ) ),
New Column( "Part", Character, "Nominal", Set Values( {"F-1.1", "F-1.2", "F-1.1", "F-1.1", "F-1.1", "F-1.1"} ) )
);
/////////////////BEGIN PROCESSING
//create a summary table
dtSum = dt << summary( group(:parameter, :location, :"Date/Time"n, :process, :tool, :part), Link to original data table( 0 ) );
//create a column for easy group navigation
dtSum << new column ("plpp", character, formula(:parameter || :location || :process || :part));
//process table, from bottom up
for each ( { r }, nrow(dtSum) :: 2,
if ( dtSum:plpp[r] == dtSum:plpp[r-1],
dtSum:tool[r-1] ||= evalinsert(", ^dtSum:tool[ r ]");
dtSum:n Rows[r - 1] += dtSum:n Rows[ r ];
dtSum << delete rows ( r );
);
);
// delete rows with no duplicates
dtSum << deleteRows (dtSum << get rows where (:n Rows == 1) )
<< Move Selected Columns( {:"Date/Time"n}, To First )
<< Move Selected Columns( {:Tool}, To Last );
// rename nRows to count, after subtracting 1
dtSum:Nrows[1::nrow(dtSum)]--;
dtSum:NRows << set name ("Count");
// split out tool column
dtSum << Text to Columns( columns( :Tool ), Delimiters( "," ) );
dtSum << delete columns ({"Tool", "plpp"});
回复:單元格與條件輸出的比較你好,
是的,我發送的最新屏幕截圖是您腳本的輸出,即您標記為“最終”表的內容。 請原諒我沒有與數據共享有問題的特定表,因為我必須更新信息以反映非 ip 參數。 我會盡力做更好的解釋。 正如我在最初的問題中提到的,下表是一個示例

輸出應如下表所示

我想創建一個概括次數(重複)或計數的表格,“工具”在“日期/時間”(不一定是特定時間)的同一天內擊中“位置”。 因此,如果一行根據位置、參數和過程重複,則應將其計為 1 次重複。 如果第二行在相同或不同的工具上,只要它滿足針對 1 次重複計數提到的 3 標準就沒有關係。 然後,輸出表示例顯示“工具 1”、“工具 2”等……這將記錄哪些工具參與了這些重複的重複事件。 因此,如果它轉到工具“E”,則(位置、參數、過程)表示同一天發生了另一個事件並且它在工具“F”上,然後將在右側添加一列以反映第一個事件發生在 E 上,第二個在 F 上,依此類推。 最終,我想根據該摘要在 jmp 中創建一組圖,在其中我可以按工具、參數、位置等顯示這些重複事件的計數... 除了在這些重複事件中涉及哪些工具。 我希望這能更多地解釋我的想法。 感謝您抽出寶貴的時間,我很感激。
回复:單元格與條件輸出的比較Brady 和我的代碼版本都適用於您提供的簡單表格。 我同意他的觀點,如果他的代碼不起作用,請提供一個填充更多的表,我們可以對其進行測試。
回复:單元格與條件輸出的比較你好,
首先,對於拖延了很長時間,我深表歉意,我被拉向了多個方向。 接下來,感謝您提供的腳本它幾乎是完美的,並且輸出了“最終”表格。 我發現計數列做了它應該做的事情,但是,“工具”沒有錨定數據。 對於每個工具的含義我應該有一個總的“計數”點擊/計數,所以一列“計數”和它旁邊的工具的相應列應該有點擊次數這也由其他列分組,如參數,位置等... 我得到的結果如下圖所示,其中工具除了分散在與計數相關的行中之外,還被分成不同的列。 而新創建的“工具”列重複相同的ID

回复:單元格與條件輸出的比較上面的輸出示例是輸出應該是什麼樣子的示例,還是輸出當前不正確的示例?
能不能附上你正在使用的JMP數據表,這樣有一些真實數據的例子可以用來測試?另外,如果上面不是數據應該是什麼樣子的例子,你能提供一個簡單的例子嗎?我對你真正想要的東西感到困惑。
回复:單元格與條件輸出的比較謝謝你成功了!
回复:單元格與條件輸出的比較謝謝,這也可以通過一些分組操作來實現。