Получайте только релевантные строки при группировке данных

У меня есть данные со ссылкой, которые я хочу сгруппировать и извлечь самые высокие и наиболее распространенные значения, сохраняя при этом соответствующие ссылки:

Получайте только релевантные строки при группировке данных

Зеленая таблица — это то, чего я добился до сих пор:

Получайте только релевантные строки при группировке данных

М-код:

let
    Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"CAS", type text}, {"Type ", type text}, {"Value ", type text}, {"Ref", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"CAS", "Type "}, {{"Value Most Common", each List.Mode([#"Value "]), type nullable text}, {"Ref", each Text.Combine([Ref], ", "), type nullable text}, {"Value Lowest", each List.Max([#"Value "]), type nullable text}})
in
    #"Grouped Rows"

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

Кроме того, я не уверен, как использовать группировку для захвата режимов, когда существует связь между наиболее распространенными значениями. List.Modes возвращает список, но снова я сталкиваюсь с ошибками. В настоящее время я возвращаю только одиночный режим. Это меньшая проблема, но было бы неплохо, как с 24,50 в строке 3 желаемого.

Data: 
CAS Type    Value   Ref
77-92-9 NOAEL   1200    WebNet
77-92-9 NOAEL   1200    Wiki
77-92-9 NOAEL   4000    ECHA
77-92-9 DNEL    500 RB Data
25265-71-8  DNEL    51  WebNet
25265-71-8  DNEL    24  ECHA
25265-71-8  DNEL    24  ECHA
25265-71-8  DNEL    50  ECHA
25265-71-8  DNEL    50  ECHA
25265-71-8  DNEL    10  ECHA
25265-71-8  NOAEL   200     OECD
106-24-1    DNEL    13.75   ECHA
106-24-1    DNEL    13.75   ECHA
106-24-1    NOAEL   300     RIFM
106-24-1    NOAEL   550     ECHA
106-24-1    NOAEL   50  SAM
106-24-1    NOAEL   50  RIFM
128-37-0    NOAEL   25  ECHA
128-37-0    NOAEL   25  ECHA
128-37-0    NOAEL   25  SAM
128-37-0    ADI 0.3     MMMD
128-37-0    ADI 0.25    JECFA
128-37-0    ADI 0.25    EFSA
60-12-8 DNEL    5.1     ECHA
60-12-8 NOAEL   385     RIFM
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все это в группе:

Отредактировано для учета нескольких режимов после редактирования

let
    Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"CAS", type text}, {"Type", type text}, {"Value", type number}, {"Ref", type text}}),

    #"Grouped Rows" = Table.Group(#"Changed Type", {"CAS", "Type"}, {
        {"Most Common", each Text.Combine(List.Transform(List.Modes([Value]), each Text.From(_)),", "), type text},
        {"Ref", (t)=>Text.Combine(List.Distinct(Table.SelectRows(t, each List.Contains(List.Modes(t[Value]),[Value]))[Ref]),", "), type text},
        {"Max", each List.Max([Value]), type number},
        {"Ref2", (t)=>Text.Combine(List.Distinct(Table.SelectRows(t, each [Value]=List.Max(t[Value]))[Ref]),", "), type text}
       })

in
    #"Grouped Rows"

Данные изменены на демонстрацию нескольких ссылок с множественным режимом.

Я думаю {"Наиболее распространенный", каждый Text.Combine(List.Modes([#"Value"]),", "), введите текст с нулевым значением}, поскольку существует несколько возможностей для наиболее повторяющихся и аналогичные изменения для других См. строку примера вывода 4 вверху справа.

horseyride 16.05.2022 17:33

@horseyride Спасибо, я опубликовал свой ответ до того, как ОП отредактировал свой вопрос, чтобы показать примеры с несколькими режимами. Сейчас редактирую.

Ron Rosenfeld 16.05.2022 17:41

Спасибо большое, мучался с этим целый день!

Nick 16.05.2022 18:11

Другие вопросы по теме