ループ内で他の列をどのように示すかこんにちは。
もう一度助けを求めなければなりません。数値列と次の列の値の間の変化の割合を計算するスクリプトを書きました。残念ながら、エラーが発生しました。"Column 1897_Canvi Formula Interrupted
引数を数値[または行列]に1回変換できません行で:{1}操作:減算、numericColNames [X] - numericColNames [i]
式の評価エラーは無視されました」
これがnumericColNamesnです。
{"_1842 _"、"_ 1877_"、"_ 1887_"、"_ 1900_"、"_ 1920_"、"_ 1930_"、"_ 1940 _"、"_ 1950_"、"_ 1960_"、" _1970_ "、" _ 1981_ "、" _ 1991 "、" _ 2001 "、" _ 2011 "、" _ 2018 ""}
これが問題のスクリプトです。
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] || "\!")" )
)
)
);再:ループで他の列を示す方法[I]Substitute()関数を正しく設定していません。
代用と代用
Substitute()関数は、置換式を含む文字列のコピーを返します。の
代入Into()関数は、元の文字列を置換式で変更します。
たとえば、次のようなスクリプトを考えます。
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 );
このスクリプトは以下の出力を返します。
str1 = "すべてのことが考慮されました";
str2 = "考慮したことがいくつかあります";
str3 = "いくつか考慮したこと"
str4 =。;
私はあなたが望むものになると私が推測しているものにあなたのスクリプトを作り直しました。
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] || "\!")" )
)
)
);
Substitute()関数のドキュメントは、スクリプトガイドからコピーされたものです。
ヘルプ==>本==>スクリプトガイド
再:ループで他の列を示す方法[I]まず第一に、あなたの助けをありがとう。スクリプトを実行すると、エラーが発生します。
次のスクリプトでは、/ * ### * /でマークされたエラー
代わりに/ * ### * /(Expr(...
脚本のこの部分は、コラムの名前が1980年のような整数であったので、あなたが過去の投稿であなたが提案したものです。1980年の代わりにそれが "_1980_"であったならば、代用品は排除されることができました。
演算子 "\!"は何をするのですか":Name"の後
教えてくれてありがとう。
再:ループで他の列を示す方法[I]1980年の列名は、列の指定の前後に:Name( "1980")を入れることで解決される問題を引き起こします。 Substitute()関数が使用されるのは、そうではありません。 Substitute()関数があります。なぜなら、列に保存されている式に値を持たせたくないからです。
(numericColNames[X] - numericColNames[i]) / numericColNames[X] )
むしろ値を持つ
( __1980__ - __1960__ / __1980__ )
式が最初に指定した構文を持つ場合は、JMPセッションがi、X、numericColNamesのいずれかの値を変更するとすぐに式が失敗することを意味します。 つまり、データテーブルを保存してJMPセッションを終了してから再びJMPを起動すると、変数i、X、またはnumericColNamesのいずれも新しいJMPセッションに含まれないため、データテーブルを開くとこれらの変数を参照する式を持つ列のいずれも失敗します。
最後に、私があなたが現在見つけている問題が何であるのか私にはわかりません。 あなたがあなたのデータのサンプルを提供することができれば、私は少なくとも問題を解明するチャンスがあるでしょう。
再:ループで他の列を示す方法[I]また会いましたね。私が意図しているのは、テルエル州(スペイン)の自治体で経時的に行われた連続的な人口調査における住民数の変化率を計算することです。私の意図は、国勢調査を次の国勢調査と比較することです。私が同封する(部分的な)自治体の名前が記録されているデータ表の最初の列には、次の6つの中で各自治体の住民が異なったセンサスに現れています。為替レートを計算するには、ある国勢調査と次の国勢調査の差を計算し、その結果を最初の国勢調査で割ってから、得られた値をパーセントで表します。ie(_1842_ - _1877_)/ _1842_
