[ABI 5.1] 如何求上升最快的前三名?

12096
9

小灰灰1 数据达人Lv4

发表于2020-7-21 09:05

悬赏1

已解决

楼主
如何求上升最快的前三名?

我想到的一个办法是用rank排序,但是rank都是重复排名,_rk是会改变结果顺序,这两个方法感觉都行不通
还有其他方法可以实现这个求前三名的效果么?



最近看过此主题的会员

esen_4XL2IVJCG8

esen_4RTBM9MIPW

fenglan

颜值区总司令

2021112209

xxxl

jen

你好啊

bbs

郑文华

Ivyguo

一一

Nevermore_2333

wut

yangqh

缱绻

davidzhang

最佳答案
本帖最后由 yangqh 于 2020-7-21 10:56 编辑

前三名一起取:比如名次变化列是K列,字号列是B列,K2$.sort().mid(0,3).select(true,@.leftcell(9).txt).join(",")
9个回答

只看楼主

xxxl 数据领袖Lv6

发表于2020-7-21 09:42

只看该作者

取消 关注该作者的回复

沙发

分值一样不应该就是并排吗,如果分值一样还不是并排排名是否不够客观呢

小灰灰1 数据达人Lv4

发表于2020-7-21 09:49

只看该作者

取消 关注该作者的回复

板凳

本帖最后由 小灰灰1 于 2020-7-21 09:51 编辑

xxxl 发表于 2020-7-21 09:42
分值一样不应该就是并排吗,如果分值一样还不是并排排名是否不够客观呢

先不要管是否客观,问题在于我如何取出来一个数组的前三个最大值如果数据是 1  3   4  4  5
那么我需要的值就是 5   4   4,按照出现的先后顺序算,这个就是类似于不重复排名呀
那不重复排名也不能保证客观公正呀,也是谁在前面谁就是第一,相同成绩在后面也是第二

小灰灰1 数据达人Lv4

发表于2020-7-21 10:29

只看该作者

取消 关注该作者的回复

地板

xxxl 发表于 2020-7-21 09:42
分值一样不应该就是并排吗,如果分值一样还不是并排排名是否不够客观呢

大哥,能否咨询下您的大神同事们,看下是否有其他方法实现这种需求?

_rk肯定是不行的,它的语法规则就不支持我这个需求,因为_rk只支持指标字段的,我这里是计算后的单元格了,这种表元的方式是不支持rk函数的

郑文华 小试身手Lv3

发表于2020-7-21 10:34

只看该作者

取消 关注该作者的回复

5#

用数组的形式来获取  类似:b1$.sort()[0].value  代表这个数组中最大的值。以此类推

小灰灰1 数据达人Lv4

发表于2020-7-21 10:52

只看该作者

取消 关注该作者的回复

6#

郑文华 发表于 2020-7-21 10:34
用数组的形式来获取  类似:b1$.sort()[0].value  代表这个数组中最大的值。以此类推 ...

这个方法可以获取到最大值,厉害
再咨询个问题哈,B3$[G3$.FIND("1")] 我想结合这个方法取其他单元格符合条件的值,但是我如果直接拼到一起,获取到的结果不对:B3$[K3$.FIND(K3$.sort()[0].value)],是我语法有问题么?没有提示错误

yangqh 数据老手Lv5

发表于2020-7-21 09:05

只看该作者

取消 关注该作者的回复

7#

本帖最后由 yangqh 于 2020-7-21 10:56 编辑

前三名一起取:比如名次变化列是K列,字号列是B列,K2$.sort().mid(0,3).select(true,@.leftcell(9).txt).join(",")

yangqh 数据老手Lv5

发表于2020-7-21 10:58

只看该作者

取消 关注该作者的回复

8#

yangqh 发表于 2020-7-21 10:55
前三名一起取:比如名次变化列是K列,字号列是B列,K2$.sort().mid(0,3).select(true,@.leftcell(9).txt).j ...

.sort是将K2浮动出来的数据降序排序,mid(0,3)是取排序后的前三项(即前三名),select的作用的取这前三名对应的B2表元的值(字号列),join是吧前面返回的结果用逗号隔开转成字符串

小灰灰1 数据达人Lv4

发表于2020-7-21 11:09

只看该作者

取消 关注该作者的回复

9#

yangqh 发表于 2020-7-21 10:58
.sort是将K2浮动出来的数据降序排序,mid(0,3)是取排序后的前三项(即前三名),select的作用的取这前三 ...

厉害,牛批
再问下哈,@.leftcell(9).txt这部分的语法规则说明有文档么?我没搜到leftcell函数的语法

xxxl 数据领袖Lv6

发表于2020-7-21 11:20

只看该作者

取消 关注该作者的回复

10#

本帖最后由 xxxl 于 2020-7-21 11:40 编辑

小灰灰1 发表于 2020-7-21 11:09
厉害,牛批
再问下哈,@.leftcell(9).txt这部分的语法规则说明有文档么?我没搜到leftcell函数的语法 ...

leftcell表示取左边的表元,这是表元对象cell中的函数
leftcell(int i)返回左边的第i个表元;如果没有,则返回null。
如果参数为负数,则等价于rightcell(-i)
Self.Leftcell(1)等于self.leftcell
Self.leftcell(5)是self左边的第5个表元
Self.leftcell(-5)返回null


Rightcell(int i)
返回右边的第i个元素;如果没有,则返回null。
如果参数为负数,则等价于leftcell(-i)
Self.rightcell(1)等于self.rigthcell


Upcell(int i)
返回上面的第i个元素;如果没有,则返回null。
如果参数为负数,则等价于downcell(-i)
Self.Upcell (1)等于self.Upcell


Downcell(int i)
返回下面的第i个元素;如果没有,则返回null。
如果参数为负数,则等价于upcell(-i)
Self.Downcell(1)等于self.Downcell

这里有用到数组对象的方法来进行取值这里用的select、find等都有,参考这个帖子http://bbs.esensoft.com/thread-133624-1-1.html

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号