JSLで数式を使用して列を再コーディングする方法recode スクリプトを正しく実行するのに問題があります。 特定の部門名に対応する番号を含む DEPT という列を持つデータ テーブルがあります。 私がやりたいのは、Dept Name という名前の新しい列を作成して、DEPT の値を取得し、数値バージョンではなく記述された部門名に変換することです。 このテーブルは、週に 2 回実行する大規模なスクリプトの一部であり、実行するたびに年ごとのデータを使用して実行するため、すべての部門番号/名前が特定の繰り返しに存在しない場合があります。 以下は私が試したものですが、単純に DEPT から Dept Name に値を転置するか、空白の Dept Name 列を取得するだけで成功しました。 どんな助けでも大歓迎です。
FD << Current Data Table();
New Column("Dept Name", Character, Nominal, Formula(:DEPT));
:Dept Name << Delete Formula;
For Each Row(:Dept Name =
Match( :Dept Name,
"100", "Wet Production",
"200", "QA Lab",
"300", "Dry Component",
"400", "Finished Component",
"410", "Microsis",
"415", "Antimicrobial",
"425", "Finished Component Product",
"475", "Special Processing",
"490", "eSIS",
"500", "QC",
"600", "Labeling",
"700", "Sterilization",
"1000", "Shipping and Finished Product Labeling",
"1200", "Quarentine",
:Dept Name);
);
Re: JSL で数式を使用して列を再コーディングする方法マッチを利用したい場合パラダイムは次のように構成する必要があります。
FD = Current Data Table();
FD << New Column( "Dog Group", Character, Nominal );
For Each Row(
Dog Group = Match( :Breed #,
"6", "Toy",
"10", "Toy",
"18", "Toy",
"20", "Toy",
"24", "Toy",
"27", "Toy",
"30", "Toy",
"31", "Toy",
"8", "Work",
"9", "Work",
"15", "Work",
"17", "Work",
"21", "Work",
"28", "Work",
"36", "Work",
"1", "Sport",
"14", "Sport",
"23", "Sport",
"26", "Sport",
"29", "Sport",
"33", "Sport"
)
);
Re: JSL で数式を使用して列を再コーディングする方法Matchを使用する場合、そのような比較はできないと思います。すべての値を個別に記述する必要があります。 Breed # とグループを格納するために、連想配列またはデータ テーブルのいずれかを使用します (Match を使用することもできますが、他のオプションの方が優れていると思います)。 これらの値を取得する場所に応じて、これらを構築するさまざまな方法があります。
Re: JSL で数式を使用して列を再コーディングする方法こんにちは!
ここJMP 16で同様のことを試みています。 唯一の違いは、各グループに複数の価値があることだと思います。 これは私が今試している式です:
FD = Current Data Table();
FD << New Column( "Dog Group", Character, Nominal );
For Each Row( Dog Group = Match( :Breed #, "6,10,18,20,24,27,30,31", "Toy", "8,9,15,17,21,28,36", "Work", "1,14,23,26,29,33", "Sport", "3,4,7,13,34,37,42", "Hound", "11,12,16,39", "Herder", "5,19,41", "Extra Fluff", "32,40", "Terrier", "2,25", "Doodle", "22", "Mixed", "35,38", "Other" ) );
私ももともと数式で再コーディングしましたが、これは現在のデータ テーブルで機能しますが、数式を新しいテーブルにコピー/貼り付けすることはできません (列名が同じであることを確認しても)。
助けてくれてありがとう!
Re: JSL で数式を使用して列を再コーディングする方法それは完璧に機能しました! 助けてくれてありがとう!
Re: JSL で数式を使用して列を再コーディングする方法あなたは正しい軌道に乗っていると思いますが、元のスクリプトが元のデータ列とターゲット データ列を混同していました。 この変更を試してください:
FD = Current Data Table();
FD << New Column( "Dept Name", Character, Nominal );
For Each Row(
:Dept Name = Match( :Dept,
"100", "Wet Production",
"200", "QA Lab",
"300", "Dry Component",
"400", "Finished Component",
"410", "Microsis",
"415", "Antimicrobial",
"425", "Finished Component Product",
"475", "Special Processing",
"490", "eSIS",
"500", "QC",
"600", "Labeling",
"700", "Sterilization",
"1000", "Shipping and Finished Product Labeling",
"1200", "Quarentine"
);
);