如何使用 JSL 中的公式重新編碼列我無法讓我的重新編碼腳本正確運行。 我有一個數據表,其中包含一個名為 DEPT 的列,其中包含一個對應於特定部門名稱的數字。 我想要做的是創建一個名為 Dept Name 的新列,它採用 DEPT 中的值並將它們轉換為書面部門名稱而不是數字版本。 該表是一個更大的腳本的一部分,我每週運行兩次,每次運行時都有滾動的一年數據,因此每個部門編號/名稱可能不會出現在任何給定的迭代中。 以下是我嘗試過的方法,但我只成功地將值從 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);
);
回复:如何使用 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"
)
);
回复:如何使用 JSL 中的公式重新編碼列我認為你不能像使用 Match 那樣進行比較,你必須單獨編寫所有值。 我會使用關聯數組或數據表來存儲 Breed # 和組(您也可以使用 Match,但我認為其他選項更好)。 根據您從哪裡獲得這些價值,可以採用多種不同的方式來構建這些價值。
回复:如何使用 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" ) );
我最初也用公式重新編碼,這在我當前的數據表中有效 - 但我無法將公式複制/粘貼到新表中(即使確保列名相同)。
謝謝你的幫助!
回复:如何使用 JSL 中的公式重新編碼列效果很好! 謝謝您的幫助!
回复:如何使用 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"
);
);