Calcola la media mobile in base a 2 colonne categoriali e ai dati combinatiHo un set di dati con dozzine medie di uova per OrderId e OrderDate per Trial (Prima, Dopo) e TrialWeek (1, 2, 3, 4, 5). Vorrei utilizzare la funzione Media mobile per calcolare la media delle dozzine alla fine di ogni settimana, utilizzando i dati delle settimane precedenti, quindi inserire questo numero in una nuova colonna. Quindi dovrebbero essere ripetute dozzine medie per ogni riga che ha la stessa Prova e TrialWeek.
Per esempio:
Prova == Prima e Settimana di prova == 1 = Decine medie per Settimana di prova 1
Prova == Prima e Settimana di prova == 1 e 2 = Decine medie Settimana di prova 2
Prova == Prima e Settimana di prova == 1, 2 e 3 = Dozzine medie di Settimana di prova 3 e così via.
Media mobile vuole che io inserisca il numero di righe su cui viene calcolata la media, tuttavia il numero di righe per TrialWeek non è lo stesso, quindi non posso utilizzare un numero fisso di righe per calcolarlo. So che dovrò scrivere una formula per farlo, ma sono bloccato su come comporla. Sto utilizzando JMP Pro 16. Qualsiasi aiuto sarebbe molto apprezzato!
Ingegneria della qualità e dei processiOggetto: Calcola la media mobile in base a 2 colonne categoriali e ai dati combinatiE 'questo quello che stai cercando?

x = .;
curWeek = :TrialWeek;
If( :Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1],
x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;
Oggetto: Calcola la media mobile in base a 2 colonne categoriali e ai dati combinatiGrazie @txnelson !
Ho regolato il codice per calcolare anche la media mobile per Trial == After, quindi sembra funzionare. Ma ho notato che il codice non stava calcolando la media mobile per TrialWeek == 1 a meno che non avessi ordinato la tabella.
x = .;
curWeek = :TrialWeek;
If(
:Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) ),
:Trial == "After" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "After" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;