Der beste Weg, den Anfangswert für einen Zeittrend zu verfolgenAlles,
Brauchen Sie einen Rat, wie Sie dies am besten organisieren können.
Ich habe also eine Tabelle, die einen Parameter für einige Kategorien im Zeitverlauf aufzeichnet. Ich muss eine Spalte haben, in der die prozentuale Änderung gegenüber einem anfänglichen Wert angezeigt wird.
Nehmen wir an, es ist ein Gewichtskampf-Tracker. Wir haben ein anfängliches Gewicht und verfolgen die prozentuale Veränderung. Derjenige, der in 30 Tagen mehr als 15% erreicht - gewinnt.
Um das zu verfolgen, habe ich eine Tabelle wie folgt erstellt:
In dieser Tabelle habe ich anfängliche Gewichtungen als Tabellenvariablen eingefügt und eine verborgene Spalte erstellt, die nur die anfängliche Gewichtung basierend auf dem Namen anzeigt:

Danach muss ich nur noch auf das Dashboard-Skript klicken und es werden alle Diagramme angezeigt.

Mein Ziel ist es, es so benutzerfreundlich wie möglich zu gestalten, sodass so ziemlich jeder die Daten eingeben kann, ohne zu viel nachdenken zu müssen. Ich habe also einige Fragen an die Community:
Nehmen wir an, wir haben eine neue Person im Spiel, und wir müssen einen neuen Namen eingeben.
- Dazu müssen Sie eine neue Tabellenvariable mit dem richtigen Namen erstellen.
- Bearbeiten Sie dann die Formel in der ausgeblendeten Spalte "InitialWeight", um diesen Namen hinzuzufügen
- Fügen Sie diesen Namen als zulässige Option für die Spalte "Name" hinzu.
Das alles ist nicht sehr benutzerfreundlich. Wir geben im Wesentlichen dreimal dieselben Daten ein. Gibt es eine Möglichkeit, dies nur einmal zu tun? Nehmen wir an, wir haben eine neue Variable eingegeben.
- Gibt es eine Möglichkeit in der Formel zu sagen - "den Wert einer Variablen mit demselben Namen wie den Wert der Spalte" Name "zurückgeben?
- Gibt es eine Möglichkeit zu sagen: "Meine zulässigen Werte sind die Namen meiner Tabellenvariablen"?
Oder gibt es vielleicht eine andere Möglichkeit, einen neuen Namen und einen ursprünglichen Weg festzulegen und diese Informationen organisch in Formeln zu ziehen? Alles, was ich mir vorstellen kann, ist das Schreiben einer voll entwickelten App, um das zu verwalten, aber vielleicht gibt es eine praktische Möglichkeit, dies sofort durchzuführen?
Vielen Dank,
M.
Re: Beste Möglichkeit, den Anfangswert eines Zeittrends zu verfolgenIch stimme zu, ein ausgewachsenes Skript wäre das Beste. Diese Größe war jedoch auf etwas ausgerichtet, das Sie mit minimaler Funktionalität in 10-15 Minuten einrichten können. Oder Sie verwenden bereits vorhandene Funktionen.
Danke für die Vorschläge! Ich denke, es ist ein eleganter Weg. Allerdings ist im Code nicht alles sofort klar, so dass es eine Weile dauern muss.
Danke noch einmal!
Re: Beste Möglichkeit, den Anfangswert eines Zeittrends zu verfolgenMiguello,
Meine Interpretation von dem, was Sie beschrieben haben, ist, dass Sie über diese Tabelle verfügen, auf die eine Community von Benutzern zugreifen kann. Ich würde wahrscheinlich etwas anderes machen wie ein Add-In. Bei Verwendung Ihrer Tabellenschnittstelle würde ich Folgendes tun:
- Entfernen Sie die Namensvariablen und entfernen Sie die ausgeblendete Spalte
- Fügen Sie ein Skript mit dem Namen New Member Registry hinzu, in dem der Benutzer zur Eingabe eines Namens und einer Gewichtung aufgefordert wird. Die Informationen werden verwendet, um ein assoziatives Array mit dem Namen registy = assoziatives Array ({"Marvin", 280}, {"Smith", 205}, {"Jones", 201} usw.) zu aktualisieren. Einmal definiert, gibt die Registrierung ["Marvin"] den Wert 250 zurück.
- Fügen Sie ein Skript mit dem Namen Initialize oder Update hinzu. Dieses Skript führt die Registrierungsdefinition aus. Die Werte befinden sich also im Arbeitsspeicher.
- Ändern Sie die Formel in t0 = Registry << get value (: Name); (: Gewicht - t0) / t0) * 100
Die angehängte Datei ist ein Modell. Sie haben nicht erwähnt, welche JMP-Version Sie verwenden. Dies funktioniert für JMP14. Wenn Sie eine frühere Version der JMP-Registrierung haben, muss eine Funktion anstelle eines assoziativen Arrays verwendet werden.
Ich denke, ein Add-In-Skript wäre robuster als Skripts und Konstanten, die in einer Tabelle eingebettet sind und die Benutzer ändern können.
Re: Beste Möglichkeit, den Anfangswert eines Zeittrends zu verfolgen
Das einzige Problem ist, dass Sie zum Aktualisieren der aktualisierten Variablen den Formelbearbeitungsbildschirm aufrufen und mindestens auf die Schaltfläche Anwenden klicken müssen. Irgendein Weg um dieses herum?
Ich nehme das zurück, es aktualisiert die Formel. Nicht sofort, sondern sobald Sie die Eingabetaste drücken und eine weitere Zeile hinzufügen.
Re: Beste Möglichkeit, den Anfangswert eines Zeittrends zu verfolgenDer erste Schritt wäre, den Match () - Ausdruck in der Formel für die Spalte "InitialWeight" durch folgenden Code zu ersetzen:
Names = Current Data Table() << Get Table Variable Names();
formula_pre = "Match( :Name";
formula = formula_pre;
formula_post = ")";
For( i = 1, i <= N Items( Names ), i++,
formula = formula || ", \!"" || Names[i] || "\!", :" || Names[i]
);
formula = formula || formula_post;
Eval( Parse( formula ) );
Dadurch wird die Liste Ihrer Tabellenvariablen übernommen und eine Matach () - Formel auf der Grundlage der Liste erstellt und ausgewertet.
Das einzige Problem ist, dass Sie zum Aktualisieren der aktualisierten Variablen den Formelbearbeitungsbildschirm aufrufen und mindestens auf die Schaltfläche Anwenden klicken müssen. Irgendein Weg um dieses herum?
Vielen Dank,
M.