Come riempire numeri sequenziali (a partire da 1) in una colonna quando elementi identici compaiono in un'altra colonna?Diciamo che ho due colonne di dati. La prima colonna partID, la seconda colonna è un valore misurato per quella parte. Ciascuna parte viene misurata N volte in modo che la colonna partID contenga righe con l'ID che appare N volte nella tabella finché non appare il successivo partID. Desidero creare una nuova colonna con il numero di ripetizioni/esecuzioni di misurazione per una determinata parte.
Quindi, per partID identici che compaiono nella colonna partID, voglio riempire la colonna Esecuzioni con numeri sequenziali a partire da 1.
Pertanto, se la parte A viene misurata 11 volte, la colonna Esecuzioni ottiene voci di riga da 1 a 11. La parte successiva B viene misurata 9 volte, la colonna Esecuzioni contiene voci di riga da 1 a 9 e così via.
Come posso automatizzarlo tramite JSL?
finestreRi: Come riempire numeri sequenziali (a partire da 1) in una colonna quando elementi identici compaiono in un'altra colonna?Finché i partID sono raggruppati come hai dichiarato, funzionerà.
If(
Row() == 1, 1,
Lag( :partID ) == :partID, Lag( :Runs ) + 1,
1
)
Ri: Come riempire numeri sequenziali (a partire da 1) in una colonna quando elementi identici compaiono in un'altra colonna?@mmarchandTSI la soluzione è una buona soluzione.Ma come al solito, in JMP esistono diversi modi per arrivare alla soluzione.Ecco una soluzione alternativa
Col Cumulative Sum( 1, :partID )
Ri: Come riempire numeri sequenziali (a partire da 1) in una colonna quando elementi identici compaiono in un'altra colonna?Col Cumulative Sum con valore 1 dovrebbe funzionare con le attuali versioni di JMP
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(10),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values({"A", "A", "A", "A", "B", "B", "C", "C", "C", "D"})
)
);
dt << New Column("Run", Numeric, Ordinal, Formula(
Col Cumulative Sum(1, :Column 1)
));