你好,
我有一组原始数据(表 1),我正在尝试将其编写为表 2 中的结果。
如果任何数字低于 300,则会将“type1”字符串打印到“result1”列中。
如果任何数字超过 300,则会将“type2”字符串打印到“result2”列中。
| 数字 |
类型1 |
类型2 |
结果1 |
结果2 |
| 100 |
a1 |
a2 |
|
|
| 200 |
b1 |
b2 |
|
|
| 150 |
c1 |
c2 |
|
|
| 275 |
d1 |
d2 |
|
|
| 第555章 |
e1 |
e2 |
|
|
| 第424章 |
f1 |
f2 |
|
|
| 第572章 |
g1 |
g2 |
|
|
| 第783章 |
h1 |
小时2 |
|
|
| 125 |
i1 |
i2 |
|
|
表1:原始数据
| 数字 |
类型1 |
类型2 |
结果1 |
结果2 |
| 100 |
a1 |
a2 |
a1 |
|
| 200 |
b1 |
b2 |
b1 |
|
| 150 |
c1 |
c2 |
c1 |
|
| 275 |
d1 |
d2 |
d1 |
|
| 第555章 |
e1 |
e2 |
|
e2 |
| 第424章 |
f1 |
f2 |
|
f2 |
| 第572章 |
g1 |
g2 |
|
g2 |
| 第783章 |
h1 |
小时2 |
|
小时2 |
| 125 |
i1 |
i2 |
i1 |
|
表2:结果
到目前为止,我对脚本所做的工作如下所示。
dt = Current Data Table();
dt << New Column("result1",
Character,
"Nominal",
For Each Row(If(:Number << 300), :result1 == :type1, "")
);
dt << New Column("result2",
Character,
"Nominal",
For Each Row(If(:Number >> 300), :result2 == :type2, "")
);
我个人发现,使用类似 Excel 的方法来解决此类问题(其中使用应用于每列的单独公式创建新列)是令人困惑且低效的。JMP 具有在“开放”JSL 代码中直接修改数据表值的功能,可用于以更简洁、更高效的方式解决问题。
// Create the new columns
dt << New Column( "result1", Character );
dt << New Column( "result2", Character );
// Populate the columns
For Each Row( If( :Number < 300, :result1 = :type1, :result2 = :type1 ) );
您好,jthi,好的,我们将尝试使用帮助信息。 该脚本有效。 谢谢您的帮助。
使用 >>/<< 作为比较并在列创建中使用 For Each Row 有几个问题。 下面是使用 << Set Each Value 的工作语法的一个选项(不要说,如果值正好是 300,它将是空的)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Number", Numeric, "Nominal", Format("Best", 9), Set Values([100, 200, 150, 275, 555, 424, 572, 783, 125])),
New Column("type1", Character(16), "Nominal", Set Values({"a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1"})),
New Column("type2", Character(16), "Nominal", Set Values({"a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", "i2"}))
);
dt << New Column("result1", Character, "Nominal", << Set Each Value(
If(:Number < 300,
:type1
, //else
""
)
));
dt << New Column("result2", Character, Nominal, << Set Each Value(
If(:Number > 300,
:type2
, //else
""
)
));
我强烈建议直接从 JMP 的“帮助”菜单查看脚本索引,然后JMP 帮助页面中的脚本编写指南。还有其他脚本源,例如
JMP 脚本语言简介了解语法