JMP 基础知识 - 如何分配列值大家好,我是 JMP 新手。我有一个定义正方形坐标的数据集。 X 列包含 x 方向的坐标,Y 列包含 y 方向的坐标。 我只想在数据表中按顺时针方向命名角 B、C、D、E 和正方形 A 的中心,并且不想创建任何图形/图片
任何人都可以帮忙编写 JSL 脚本吗?
回复:JMP 基础知识 - 如何分配列值

您提供的新数据不符合我在创建我提供的原始脚本时所做的假设。 我假设了一个正方形,X 和 Y 坐标可以通过检查极值来定义,对于中心点,可以定义真正的中心(平均值)。 您还指出角点将按顺时针顺序排列(B、C、D、E)。 从上图中可以看出,情况也不再如此。 因此,我能看到的唯一解决方案是对角点的值进行硬编码。
Names Default To Here( 1 );
dt = Current Data Table();
If(
Col Number( dt:x1 ) == 5,
dt << New Column( "Corners", Character, values( {"B", "C", "A", "D", "E"} ) ) //
, // Else
Col Number( dt:x1 ) == 6,
dt << New Column( "Corners",
Character,
values( {"B", "C", "A-Bottom", "A-Top", "D", "E"} )
)
);
回复:JMP 基础知识 - 如何分配列值谢谢你的快速反应! 我更喜欢解决方案 1,这就是我一直在寻找的。
为了更进一步,我的数据如下所示,我必须为 2 个不同的场景定义 2 个条件语句。
1.当数据在正方形中心只有1个A角时
2. 当数据中心有 2 个点时,称它们为:A-Top 和 A-bottom(具有相同的 X 坐标)
根据数据表中存在的数据,我尝试编写脚本来命名角点,如下所示(按顺序)。
| X1 | Y1 | 角球 | Y1 | Y2 | 角球 |
| -70 | 29102 | 乙 | -25 | 26338 | 乙 |
| 第1569章 | -18 | C | 1615 | -18 | C |
| 9202 | 15299 | A | 9264 | 9272 | A 底 |
| 14784 | 30692 | D | 9264 | 18563 | 在顶上 |
| 16424 | 第1572章 | 乙 | 15585 | 27929 | D |
| | | | 17226 | 第1572章 | 乙 |
如果您可以分享该脚本,将会很有帮助。
谢谢!
回复:JMP 基础知识 - 如何分配列值我不确定您实际上在寻找什么,但如果下表是它,则表后面的脚本将生成角名称

Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Corner Name", character );
dt:Corner Name[dt << get rows where( :x == Col Min( :x ) & :y == Col Min( :y ) )] = "B";
dt:Corner Name[dt << get rows where( :x == Col Min( :x ) & :y == Col Max( :y ) )] = "C";
dt:Corner Name[dt << get rows where( :x == Col Max( :x ) & :y == Col Max( :y ) )] = "D";
dt:Corner Name[dt << get rows where( :x == Col Max( :x ) & :y == Col Min( :y ) )] = "E";
dt:Corner Name[dt << get rows where( :x == Col Mean( :x ) & :y == Col Mean( :y ) )] = "A";
// OR
dt << New Column( "Corner Name 2", character );
dt:Corner Name 2[1] = "B";
dt:Corner Name 2[2] = "C";
dt:Corner Name 2[3] = "D";
dt:Corner Name 2[4] = "E";
dt:Corner Name 2[5] = "A";
// OR
dt << New Column( "Corner Name 3", character, values({"B","C","D","E","A"}) );