Spaltenformel, RelativwertberechnungenIch habe versucht, eine neue Spaltenformel für eine Datentabelle zu erstellen, bei der sich der berechnete Wert basierend auf den Werten der Spalten auf der linken Seite ändert. Beispiel dafür, was ich meine, anhand der Beispieldatei „Big Class“. Nehmen wir an, es gibt 200 statt 20 Zeilen, wobei jeder Name zehnmal hintereinander vorkommt, als ob die Größen und Gewichte zehn Jahre lang einmal im Jahr neu aufgezeichnet würden. Außerdem gäbe es in der Datentabelle eine weitere Spalte mit den Jahren, in denen die Daten erfasst wurden . Alle Namen hätten die gleichen Jahre (z. B. 2001, 2002, 2003 ...). 2010). Die neue Spalte, für die ich eine Formel schreiben möchte, wäre beispielsweise der Höhepunkt dieses Jahres minus dem Jahr 2003. Vielleicht haben sie in diesem Jahr mit der Einnahme von Vitaminen begonnen und Sie möchten zeigen, wie sich das auf ihr Höhenwachstum ausgewirkt hat. Die neue Spalte würde dann mit Werten wie -.5, 0, .25, .7 ... gefüllt, allesamt relative Werte zur angegebenen Höhe im Jahr 2003, jeweils nach Namen.
Da das Jahr 2003 das 20. Jahr wäre, welche Art von if/while/summarize/by/conditional-Formel würde verwendet werden, damit die Körpergrößen jedes Namens mit denen derselben Person verglichen werden und nicht mit einer am anderen Ende der Datentabelle?
Dank im Voraus!
Betreff: Spaltenformel, RelativwertberechnungenIch habe die Formel zum Laufen gebracht, indem ich, wie Sie vorgeschlagen haben, einige weitere Bedingungen hinzugefügt habe. Es hat gut funktioniert, aber nach dem Hinzufügen einer weiteren Spalte mit einer ähnlichen Formel und ähnlichen Codezeilen wird beim Ausführen des Skripts die Fehlermeldung „Reagiert nicht“ angezeigt. Beim Ausführen des Debuggers habe ich das Problem auf „trow = dt << get rows where…“ reduziert. Der Debugger sagt, dass dafür mehr als 50 % der Laufzeit aufgewendet werden.
Nach meinem Verständnis führt JMP das Skript auf einmal aus, also fügt das Einfügen eines Wait(0); oder dt << Formeln ausführen; werde ihm eine Verschnaufpause gönnen. Was ist die beste Vorgehensweise bei der Verwendung dieser? Ich habe versucht, diese auf verschiedene Weise zu nutzen; Nur eins vor der Formel, ein paar verstreut vorher und nachher, aber immer noch das Problem, dass ich nicht antworte.
Da die Datentabelle etwa dreitausend Zeilen und zwei Spalten mit der Formel enthält, ist es verständlich, dass das Programm Zeit zum Nachdenken braucht. Ich habe versucht, das Skript auf einem zweiten Computer mit höheren Spezifikationen auszuführen, erhalte jedoch die gleiche Antwort. Gibt es andere Methoden für die Ausführung von „trow = dt << get rows where...“, die es dem Programm ermöglichen würden, es einfacher aufzuschlüsseln?
Betreff: Spaltenformel, RelativwertberechnungenSie fügen Ihrer Formel lediglich bedingte Elemente hinzu.Sie müssen IF-Anweisungen auf die Formel anwenden, um die von Ihnen angegebenen Bedingungen abzudecken.Daran ist nichts Schwieriges.Die Methode, die ich Ihnen gezeigt habe, passt immer noch, Sie müssen nur die anderen Bedingungen hinzufügen.
Betreff: Spaltenformel, RelativwertberechnungenIn der Tat. Ich habe damit in den letzten Tagen Erfolg gehabt und bin damit zwar gescheitert, habe aber langsam, aber sicher Fortschritte gemacht. Dieser Schluckauf ist nur ein Teil eines Skripts, an dem ich feststecke.Betreff: Spaltenformel, RelativwertberechnungenWenn es hilft, es besser zu erklären, zeichnen wir das Beispiel neu. Mit der Stichprobe „Große Klasse“ möchte ich eine neue Spalte, in der alle weiblichen F-Größen einzeln mit KATIES Größe und alle männlichen M-Größen mit JOHNs Größe verglichen werden. Diese neue Spalte würde „Höhenunterschied“ heißen und jede Zeile würde die Größe dieser Person minus der Größe von KATIE oder JOHN enthalten, je nach M/F. Die Zeilen 2, 3, 4 mit LOUISE, JANE und JACLYN haben also „Höhendifferenz“-Werte von 2, -4 bzw. 5. (Negative Zahlen sind akzeptabel). Wenn es jedoch um TIM geht, wird seine Größe mit JOHNs 65 und nicht mit KATIEs 59 verglichen.
Um noch einen Schritt weiter zu gehen: Was wäre, wenn ich dies für jeden Namen auf der Liste tun würde, außer für diejenigen, deren Alter = 14 ist? Alle Zeilen, in denen Alter! = 14 ist, haben immer noch ihren jeweiligen „Höhenunterschied“ im Vergleich zu KATIE und JOHN. Für Personen ab 14 Jahren möchte ich, dass die Zelle leer ist.
Hoffentlich klärt dies die Dinge auf und gibt ein Beispiel, an dem man arbeiten kann, anstatt sich nur damit auseinanderzusetzen. Wenn es dadurch verwirrender wird, dann ignoriere es komplett 
Betreff: Spaltenformel, RelativwertberechnungenRichtig, beide Annahmen ... aber anstatt zu fragen, schlage ich vor, dass Sie beginnen, solche Ideen selbst auszuprobieren. Man lernt wirklich nicht, indem man fragt, sondern indem man es versucht... scheitert und dann Erfolg hat
Betreff: Spaltenformel, RelativwertberechnungenFür die Terzzeile mit Col Min wären diese Tabellen technisch gesehen Zeichen, allerdings laut dieser Hilfeseite http://www.jmp.com/support/help/Statistical_Functions_2.shtml min kann entweder nur numerisch oder nur Zeichenfolgen sein, das sollte also kein Problem sein, richtig?
Zweitens: Was ist, wenn ich nicht möchte, dass die Daten mit dem Mindestwert verglichen werden, sondern mit einem Wert, den ich wähle? Würde es in diesem Szenario ausreichen, ein :Year == " xy z" einzurichten?
Betreff: Spaltenformel, RelativwertberechnungenVersuchen Sie etwas wie Folgendes:
dt = Current Data Table();
tname = :name;
tyear = Col Min( :Year, :name );
trow = (dt << get rows where( tname == :name & tyear == :Year ))[1];
-1 * :weight[trow] + :weight[Row()];