如何从一列重命名多个变量?我在 1 列中有多个变量(即 B、F、T)需要重命名。
Local({dt, col1},
dt = Data Table("ProductDefect");
dt << Begin Data Update;
col1 = dt << New Column(dt:LayerData);
col1 << Set Name("Side");
dt << Move Selected Columns({col1}, after(dt:LayerData));
For Each Row(
dt,
col1[] = If(Contains(dt:LayerData, "B"),
"Back",
dt:LayerData
)
);
dt << End Data Update;
);使用此脚本,我只会更改 B,而其他变量(即“F”、“T”)不会更改。要如何在新列中重命名所有内容;B = Back、F = Front、T = Top?
自动化和脚本回复:如何从一列重命名多个变量?Recode 平台可以轻松为您创建这种类型的转换。


Local({dt, col1},
dt = Data Table("Big Class");
dt << Begin Data Update;
col1 = dt << New Column(dt:sex);
col1 << Set Name("sex 2");
dt << Move Selected Columns({col1}, after(dt:sex));
dt << Recode Column(
dt:sex,
{Map Value(_rcOrig, {"F", "Female", "M", "Male"}, Unmatched(_rcNow))},
Update Properties(1),
Target Column(col1)
);
dt << End Data Update;
);
您可能还想考虑使用“值标签”列属性

它不会改变表中的数据,但你会看到“重新编码”的值
回复:如何从一列重命名多个变量?感谢您的反馈!
但是,通过使用重新编码平台,脚本无法实现自动化,因为每次数据库有新添加内容时,我都必须从数据库上传数据并手动重新编码。
如所附示例所示,我的数据不断从系统更新,命名将不断变化,而数字和变量保持不变(例如,1B-xx、1F-xx、1T-xx、2B-xx、2F-xx、2T-xx,...)。从系统中,它不会自动显示,即 B = 后、F = 前、T = 顶部。
有没有一种方法,不需要每次想要进行分析时都重复 Recode?
回复:如何从一列重命名多个变量?“2B-New”应该是“Back”还是“2Back-New”等等?
回复:如何从一列重命名多个变量?是的,在新列中,我只想指定“侧面”。因此 2B-New 将是“背面”,2T-Basic 将是“顶部”,依此类推。
回复:如何从一列重命名多个变量?您可以多次使用重新编码和替换字符串。我不知道您的数据,所以我不确定哪种方法最好(我可能会使用简单的正则表达式,如果需要更复杂的方法,您也可以这样做)

对所有有自己图案的人重复此操作

JMP 会为你创建一个脚本
// Recode column: ProductDefect
Local({dt},
dt = Data Table("Sheet1");
dt << Begin Data Update;
dt << Recode Column(
dt:ProductDefect,
{Regex(_rcNow, ".*?\d+B.*", "Back", GLOBALREPLACE),
Regex(_rcNow, ".*?\d+T.*", "Top", GLOBALREPLACE),
Regex(_rcNow, ".*?\d+F.*", "Front", GLOBALREPLACE)},
Update Properties(1),
Target Column(:ProductDefect)
);
dt << End Data Update;
);
如果你不想在现场执行此操作,请在未启用该功能的情况下运行 recode
回复:如何从一列重命名多个变量?非常感谢你的帮助!这和我想象的一样!