Как перечислить наиболее часто встречающиеся строки из 3 слов в Google Sheets - PullRequest
2 голосов
/ 06 апреля 2020

У меня есть список отраслей промышленности со смежным списком отраслей, чтобы классифицировать их. Я хотел бы знать, какие отрасли являются наиболее распространенными, но мне не удается заставить Листы интерпретировать категории из двух слов как одну.

Во-первых, я хотел бы знать, какие 5 категорий являются наиболее распространенными в целом. Также я хотел бы знать 5 лучших категорий, состоящих из одного слова (черный), двух слов (красный) и трех слов (синий).

Плюс я бы хотел избавиться от запятых.

Вот чего я хочу достичь и ссылку на документ листов Google, где я выложил все данные:

Document Screenshot

https://docs.google.com/spreadsheets/d/13N8gc4POPhFhTvyqq-UugWS5GCgcONwliacSL8-MAr8/edit#gid = 0

Как эти категории можно сгруппировать и перечислить?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

общее слово:

=ARRAYFORMULA(QUERY(TRANSPOSE(SPLIT(QUERY(B3:B11&",",,99^99), ", ")), 
 "select Col1,count(Col1) 
  group by Col1
  order by count(Col1) desc
  limit 5
  label count(Col1)''"))

общая фраза:

=ARRAYFORMULA(QUERY(TRANSPOSE(SPLIT(QUERY(B3:B11&",",,99^99), ",")), 
 "select Col1,count(Col1) 
  group by Col1
  order by count(Col1) desc
  limit 5
  label count(Col1)''"))

одно слово:

=ARRAYFORMULA(QUERY(TRIM(TRANSPOSE(SPLIT(QUERY(B3:B11&",",,99^99), ","))), 
 "select Col1,count(Col1)
  where not Col1 contains ' '
  group by Col1
  order by count(Col1) desc
  limit 5
  label count(Col1)''"))

два слова :

=ARRAYFORMULA(QUERY(TRIM(TRANSPOSE(SPLIT(QUERY(B3:B11&",",,99^99), ","))), 
 "select Col1,count(Col1)
  where Col1 matches '\w+ \w+'
  group by Col1
  order by count(Col1) desc
  limit 5
  label count(Col1)''"))

три слова:

=ARRAYFORMULA(QUERY(TRIM(TRANSPOSE(SPLIT(QUERY(B3:B11&",",,99^99), ","))), 
 "select Col1,count(Col1)
  where Col1 matches '\w+ \w+ \w+'
  group by Col1
  order by count(Col1) desc
  limit 5
  label count(Col1)''"))
1 голос
/ 07 апреля 2020

Разбиение задачи на 3 формулы позволит вам поддерживать столько «слов», сколько вы хотите.

Шаг 1) поместите формулу в D29 трактуйте все слова как одно слово ( глядя на ваш вопрос, кажется, что это единственный шаг, который вам действительно нужен)

=query(arrayformula(trim(substitute(transpose(split(query({substitute(B3:B," ","_")},"select * where Col1 is not null",counta(B3:B)),", ")),"_"," "))),"select Col1, count(Col1) group by Col1 order by count(Col1) desc label Col1 'Descriptions', count(Col1) 'Frequency'")

Шаг 2) поместите формулу в F29 Поместите эту следующую формулу рядом с таблицей, созданной по формуле выше , D30:D следует заменить, если вы используете разные диапазоны.

=arrayformula({"Words";if(D30:D="","",1+LEN(D30:D)-len(SUBSTITUTE(D30:D," ","")))})

Шаг 3) поместить формулу в G29 Это выведет наибольшую частоту, упорядоченную по количеству слов D29:F следует заменить, если вы используете разные location

=query({D29:F},"select * where Col1 is not null order by Col3,Col2 desc")

Преимущество такого способа в том, что вы поддерживаете 1,2,3,4 ... частоту слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...