首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一定条件下求n次最频繁值的有效方法

在一定条件下求n次最频繁值的有效方法
EN

Stack Overflow用户
提问于 2021-02-25 20:19:43
回答 1查看 57关注 0票数 0

我有一个数组公式工作,但它是缓慢的计算,我怀疑它是最有效的方式来做到这一点。为了简化这个问题,假设A列是“位置”,B列是" person ",我想确定,对于指定的位置,与该位置相关联的人,以及与任何位置(即所有地点)关联最频繁的第n个人。为了帮助我的公式,我为每一个条目定义了C列,作为B列中人员的COUNT (即,它等于该行中人员的关联总数)。

使用IF ( A = TargetPerson, C)生成一个数组,它是false,A不是TargetPerson,如果它是TargetPerson,则是计数(C)。

取上面的MAX

使用MATCH查找上面确定的最大值,其中查找范围是在上面的第一步中计算出来的相同数组。

使用INDEX返回匹配行的B列。

这方面的问题:

  • 看上去很慢。
  • ,我很难把它推广到识别第n位最频繁的人;我尝试了LARGE来代替MAX,但是如果你有两个同样频繁发生的个体,它就会崩溃--在这种情况下,我希望能够基于alpha类型返回它们。例如,

感谢你给我的小费。

被要求提供可重复的例子。不知道如何通过这个提供数据..。

数据:

代码语言:javascript
复制
A           B               C = count of person B for the full column B
Location    Person
New York    Luke Skywalker
New York    Darth Vader
New York    Carrie Fisher
London  Carrie Fisher
Cairo   Mark Hammill
Dublin  Mark Hammill
Sydney  Mark Hammill
Melbourne   Carrie Fisher

Sheet2中的公式,该公式包含每个唯一位置的行(col ),并试图返回与该位置关联的人,该人也经常与任何位置相关联(在col中):

代码语言:javascript
复制
=INDEX(Sheet1!$B$2:$B$9,MATCH(MAX(IF(Sheet1!$A$2:$A$9=Sheet2!A4,Sheet1!$C$2:$C$9)),IF(Sheet1!$A$2:$A$9=Sheet2!A4,Sheet1!$C$2:$C$9),0),1)
EN

回答 1

Stack Overflow用户

发布于 2021-02-25 21:52:01

您可以作为一个相当快的函数来完成它,但是您需要将一个中间结果停在某个地方。由于某些原因,我不能将FILTER的结果传递给第二个FILTER

所以我把第一个FILTER放到E5中,然后把它传递到第二个过滤器中。

代码语言:javascript
复制
E5
=FILTER(A5:C12, A5:A12=$B$1)

代码语言:javascript
复制
I5
=FILTER(E5#, G5:G7=LARGE(OFFSET(E5#, 0, 2, COUNTIF(A5:A12, B1), 1), B2))

步骤如下:

基于location

  • Isolate的输入列表--计数(筛选器输出,最初的C列是什么)--使用offset识别第n大列的值,用户使用LARGE确定第n大的值,用户根据与第n大的

相关联的值确定中间数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66375897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档