取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
选择语言 隐藏翻译栏
查看原发布的话题

基于最后 3 个字符值的订单级别

uProf
Level III

你好 -

 

我希望图中 x 轴上的值顺序按升序排列。 问题是这些值是字母数字字符串,只有最后 3 个字符指示顺序。

 

例如,我希望在绘图上按从左到右的顺序查看这些内容。

 

1:YRFCA1

2:YRTCB1

3:YRACB2

4:YRTCC0

 

行和值顺序级别以不同的方式排列数据。

 

我可以对上面的值进行子字符串处理,并在订购它们之前仅关注最后 3 个字符,但不确定如何在图中显示整个 6 个字符的字符串。

 

感谢您提供有关如何在 JSL 中实现此功能的意见。

 

谢谢!

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

1 个已接受解答

已接受的解答
Craige_Hales
Super User

回复:基于最后 3 个字符值的订单级别

好的!

5 条回复5
Craige_Hales
Super User

回复:基于最后 3 个字符值的订单级别

也许是这样的。 我在 GUI 中创建了转换列,然后保存了它。 右键单击要转换的变量(在列选择器中),选择“转换”->“公式”。 然后将新的变换变量拖放到图形生成器中。

Graph Builder(
 Size( 893, 823 ),
 Show Control Panel( 0 ),
 Variables(
  X( :name ),
  Y(
   Transform Column(
    "Transform[name]",
    Character,
    Nominal,
    Formula(
     Right( :name, 3 ) || "_" || Left( :name, Length( :name ) - 3 )
    )
   )
  )
 ),
 Elements( Points( X, Y, Legend( 8 ) ) )
);

undefinedLast three letters moved to front of name

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

ZF
ZF
Level III

回复:基于最后 3 个字符值的订单级别

我按最后 3 个字符对表进行排序(首先获取最后 3 个字符的子字符串),然后设置长文本列“值排序”的属性。

Names default to here(1);
dt=New Table( "order by another col",
 Add Rows( 4 ),
 New Column( "Label",
  Character,
  "Nominal",
  Set Values( {"YRFCA1", "YRTCB1", "YRACB2", "YRTCC0", "YAAAA4"} )
 ),
 New Column( "Last 3",
  Character,
  "Nominal",
  Formula( Right( :Label, 3 ) ),
),
);
dt << sort(replace table(1), by(:Last 3));
values=dt:Label << get values;
dt:Label << set property ("Value Ordering", values);

undefined

 

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

Craige_Hales
Super User

回复:基于最后 3 个字符值的订单级别

好的!

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

uProf
Level III

回复:基于最后 3 个字符值的订单级别

这两种方法都非常有帮助。 感谢克雷格和采埃孚!

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

jthi
Super User

回复:基于最后 3 个字符值的订单级别

您还可以通过 JSL“强制”JMP 使用非数字列的排序,但这可能是一个错误而不是功能,因此使用时可能有点冒险:

 

Names Default To Here(1);
dt = New Table("table",
 Add Rows(5),
 New Column("Col", Character, "Nominal", Set Values({"YRFCA1", "YRTCB1", "YRACB2", "YRTCC0", "YAAAA4"})),
 New Column("order", Character, "Nominal", Formula(Right(:Col, 3)))
);

dt = Graph Builder(Variables(X(:Col, Order By(:order, Ascending))), Elements(Points(X, Legend(34))));

undefined

 

您也可以使用两个 x 轴标签行直接从图形生成器执行此操作:

 

undefined

然后,如果您愿意,可以打开 x 轴设置,然后对其他标签的设置进行一些修改以隐藏它(按本例顺序):

undefined

你最终会得到:

undefined

然后您可以更改 x 轴以删除顺序 /。

 

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。