如何使用 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"
);
);