In einer Schleife, wie man eine andere Spalte anzeigt, die [I]Hi.
Wieder muss ich um Hilfe bitten. Ich habe ein Skript geschrieben, das den Prozentsatz der Änderung zwischen den Werten einer numerischen Spalte und der nächsten berechnet. Leider bekomme ich eine Fehlermeldung: "Column 1897_Canvi Formula Interrupted
Argument kann nicht 1-mal in eine Zahl [oder Matrix] konvertiert werden Bei Zeilen: {1} Operation: Subtract, numericColNames [X] - numericColNames [i]
Formelauswertungsfehler wurden ignoriert "
Dies sind die numericColNamesn:
{"_1842 _", "_ 1877_", "_1887_", "_1897_", "_1900_", "_1910_", "_1920_", "_1930_", "_1940 _", "_ 1950_", "_1960_", " _1970_", " _1981_ "," _1991_ "," _2001_ "," _2011_ "," _2018_ "}
Das ist das fragliche Skript:
Names Default To Here( 1 );
dt = Current Data Table();
numericColNames = dt << get column names( string, numeric );
For( i = 2, i <= N Items( numericColNames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( numericColNames[i] ) || "_Canvi",
Numeric,
Continuous,
Format( "Percent", 12, 1 ),
X = i - 1,
Formula( (numericColNames[X] - numericColNames[i]) / numericColNames[X] )
)
),
Expr( __col__ ), Parse( ":Name (\!" " || numericColNames[i] || "\!")" )
)
)
);Betreff: In einer Schleife, wie man eine andere Spalte anzeigt, die [I]Hallo wieder. Ich beabsichtige, die prozentuale Veränderung der Einwohnerzahl in den aufeinanderfolgenden Volkszählungen zu berechnen, die in den Gemeinden der Provinz Teruel (Spanien) im Laufe der Zeit durchgeführt wurden. Meine Absicht ist es, eine Volkszählung mit der folgenden Volkszählung zu vergleichen. In der ersten Spalte der Datentabelle, die ich (teilweise) beilege, sind die Namen der Gemeinden eingetragen, in den folgenden sechs erscheinen die Einwohner jeder Gemeinde in den verschiedenen Volkszählungen. Um den Wechselkurs zu berechnen, berechne ich die Differenz zwischen einer Volkszählung und der nächsten, dividiere das Ergebnis durch die erste Volkszählung und drücke dann den erhaltenen Wert in Prozent aus. dh (_1842_ - _1877_) / _1842_

Betreff: In einer Schleife, wie man eine andere Spalte anzeigt, die [I]Der Spaltenname 1980 verursacht ein Problem, das behoben wird, indem ein :Name("1980") um die Spaltenspezifikation gesetzt wird.Aus diesem Grund wird die Substitute()-Funktion nicht verwendet.Die Funktion Substitute() ist da, weil Sie nicht möchten, dass die Formel, die für die Spalte gespeichert wird, den Wert hat
(numericColNames[X] - numericColNames[i]) / numericColNames[X] )
sondern um den Wert zu haben
( __1980__ - __1960__ / __1980__ )
Wenn die Formel die erste von mir angegebene Syntax aufweist, bedeutet dies, dass die Formel fehlschlägt, sobald Ihre JMP-Sitzung einen der Werte für Folgendes ändert: i, X, numericColNames.Mit anderen Worten, wenn Sie Ihre Datentabelle speichern, Ihre JMP-Sitzung beenden und JMP dann erneut starten, befinden sich keine der Variablen i, X oder numericColNames in Ihrer neuen JMP-Sitzung, sodass beim Öffnen der Datentabelle alle der Spalten mit Formeln, die auf diese Variablen verweisen, schlägt fehl.
Schließlich bin ich mir nicht sicher, was das Problem ist, das Sie derzeit finden.Wenn Sie ein Beispiel Ihrer Daten zur Verfügung stellen könnten, habe ich zumindest die Möglichkeit, das Problem herauszufinden.
Betreff: In einer Schleife, wie man eine andere Spalte anzeigt, die [I]Erstmal danke für deine Hilfe. Wenn ich Ihr Skript ausführe, erhalte ich den Fehler:
Im folgenden Skript Fehler markiert mit / * ### * /
Ersetzen / * ### * / (Ausdruck (...
Dieser Teil des Skripts wurde in einem früheren Beitrag vorgeschlagen, da die Namen der Spalten ganze Zahlen wie 1980 waren. Der Ersatz könnte eliminiert werden, wenn statt 1980 "_1980_" steht.
Was bedeuten die Operatoren "\!" nach ": Name".
Nochmals vielen Dank für Ihre Lehren.
Betreff: In einer Schleife, wie man eine andere Spalte anzeigt, die [I]Sie richten die Substitute()-Funktion nicht korrekt ein.
Ersetzen und Ersetzen in
Die Funktion Substitute() gibt eine Kopie einer Zeichenfolge mit einem Ersetzungsausdruck zurück. Das
Die Funktion Substitute Into() ändert die ursprüngliche Zeichenfolge durch einen Ersatzausdruck.
Betrachten Sie beispielsweise das folgende Skript:
str1 = str2 = "All things considered";
str3 = Substitute( str1, "All", "Some" );
// str3 holds the result of the Substitute, and str1 is not changed
str4 = Substitute Into( str2, "All", "Some" );
// Substitute Into returns nothing, so str4 is missing, and str2 is changed
// and now holds the result of Substitute Into
Show( str1, str2, str3, str4 );
Dieses Skript gibt die folgende Ausgabe zurück:
str1 = "Alles in allem";
str2 = "Einige Dinge berücksichtigt";
str3 = "Einige Dinge berücksichtigt";
str4 = .;
Ich habe Ihr Skript überarbeitet, so dass ich vermute, dass es das sein wird, was Sie wollen
Names Default To Here( 1 );
dt = Current Data Table();
numericColNames = dt << get column names( string, numeric );
For( i = 2, i <= N Items( numericColNames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( numericColNames[i] ) || "_Canvi",
Numeric,
Continuous,
Format( "Percent", 12, 1 ),
X = i - 1,
Formula( (__colX__ - __coli__ / __colX__ )
)
),
Expr( __coli__ ), Parse( ":Name (\!" " || numericColNames[i] || "\!")" ),
Expr( __colX__ ), Parse( ":Name (\!" " || numericColNames[X] || "\!")" )
)
)
);
Die Dokumentation der Substitute()-Funktion wurde aus dem Scripting Guide kopiert
Hilfe==>Bücher==>Scripting Guide