Hallo,
Ich mache eine Stabilitätsstudie und möchte am Tag 1 Grenzwerte von +/- 20% meines Ergebnisses festlegen. Ich weiß dank der Hilfe eines anderen Mitglieds dieser Community, wie man die Grenzen zum Graoh hinzufügt, aber jetzt möchte ich eine Formel aufstellen, damit diese Grenze automatisch berechnet wird, wobei der Wert von Tag 1 für jede Probe berücksichtigt wird.
Ich habe diese Formel für die Obergrenze geschrieben, aber sie funktioniert nicht.
: Daten [Zeile (),: Tag == 1] * 1,2
Ich glaube, ich verwende den Index falsch.
Ich füge in PJ die Beispieltabelle ein, die ich mit den Ergebnissen verwende, die ich nach der Anwendung der Formeln auf die Spalten USL (Wert an Tag 1 + 20%) und LSL (Wert an Tag 1 - 20%) verwenden möchte.
Hat jemand eine Lösung?
Vielen Dank im Voraus
Hallo,
Für diese Art von Operationen tendiere ich dazu, einen vereinfachten Ansatz zu verwenden, der darauf beruht, eine neue Spalte "Tag 1" mit der folgenden Formel zu erstellen:
If (Row () == 1, :MEASURE, if (:TIME == "Day 1", :MEASURE, Lag (:DAY_1, 1))
Dann ist es einfacher, die USL und LSL als Referenz für die anderen Zeitpunkte zu berechnen.
Ist das sinnvoll?
Beste,
TS
Hier sind einige Möglichkeiten, dies zu tun, mit Lok() und Eval(Eval Expr()) (ein bisschen ähnlich wie hier: Betreff: Wie berechnet man relative Werte basierend auf einer Position eines Basiswertes? .
Names Default To Here(1);
dt = New Table("Example_USL_LSL",
Add Rows(10),
Compress File When Saved(1),
New Column("Sample",
Character(1),
"Nominal",
Set Values({"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"})
),
New Column("Day",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 5, 10, 1, 2, 3, 5, 10])
),
New Column("Data",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([10, 12, 9, 7, 5, 160, 158, 162, 67, 26]),
Set Display Width(46)
)
);
/*a = Loc(:Sample << get as matrix, :Sample);
b = Loc(:Day[a], 1)[1];
c = a[b];
:Data[c]*1.2; //0.8 for lsl
*/
dt << New Column("LSL", Numeric, Continuous, Formula(
If(Row() == 1,
dayOnes = Loc(:Day << Get as Matrix,1);
);
dayOneForSample = dayOnes[Loc(:Sample[dayOnes], :Sample)][1]; //current samples day 1 row number
:Data[dayOneForSample]*0.8;
)
);
dt << New Column("USL", Numeric, Continuous, Formula(
If(Row() == 1,
dayOnes = Loc(:Day << Get as Matrix,1);
);
dayOneForSample = dayOnes[Loc(:Sample[dayOnes], :Sample)][1]; //current samples day 1 row number
:Data[dayOneForSample]*1.2;
)
);
dt << New Column("LSL_eval", Numeric,"Continuous",Format("Best", 12), Formula(
Name Expr(
Eval(
Eval Expr(
:Data[(:Sample << get data table) << get rows where(
:Day == 1 & :Sample == Expr(:Sample[Row()])
)] * 0.8
)
)
)
));
dt << New Column("USL_eval", Numeric,"Continuous",Format("Best", 12), Formula(
Name Expr(
Eval(
Eval Expr(
:Data[(:Sample << get data table) << get rows where(
:Day == 1 & :Sample == Expr(:Sample[Row()])
)] * 1.2
)
)
)
));
Wenn Sie die Loc()-Lösung verwenden würden, würde ich dringend vorschlagen, sie in kleineren Teilen zu überprüfen, um zu verstehen, was vor sich geht.