Создайте столбец, который будет учитывать все буквы «Y» во всех остальных столбцах для каждой строки в Power BI

Я работаю в Power BI и имею набор данных со столбцами, содержащими «Y», «N» или «NA». Здесь более 100 столбцов, поэтому я стараюсь не создавать оператор if для каждого столбца. Есть ли способ подсчитать количество букв «Y» в каждой строке для каждого столбца? На примере я мог бы сделать это и для буквы «N». Заранее спасибо. Результатом будет новый столбец, в котором будут подсчитаны все буквы «Y» в других столбцах. Вот что получается в Excel (но на самом деле у меня более 100 столбцов/вопросов):

Примеры данных и ожидаемый результат, пожалуйста.

davidebacci 11.07.2024 17:00

Спасибо за ответ. Я поместил вывод в вопрос. Надеюсь, это поможет!

Natalie 11.07.2024 17:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Я попробовал с этим набором данных:

А Б С Д Да Н Да NA Н Да NA Да NA NA NA Да Да Да Да Да

Я пошел в «Преобразовать данные» -> «Добавить столбец» -> «Пользовательский столбец».

Я использовал этот код:

let
    columnNames = Table.ColumnNames(#"Source"),
    customColumn = Table.AddColumn(#"Source", "Count of Y", each List.Sum(List.Transform(columnNames, (col) => if Record.Field(_, col) = "Y" then 1 else 0)))
in
    customColumn

Замените #"Source" на предыдущий шаг процесса Power Query. Вы также можете изменить «Количество Y» на желаемое новое имя столбца.

Мой результат был:

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

Natalie 11.07.2024 17:53

Это измененный код, который я вставил, когда перешел к настраиваемому столбцу: Это код, который я использовал с измененным исходным кодом. let columnsNames = Table.ColumnNames(#"Замененное значение3"), customColumn = Table.AddColumn(#"Замененное значение3", "Количество Y", каждый List.Sum(List.Transform(columnNames, (col) => if Record .Field(_, col) = "Y", затем 1, иначе 0))) в customColumn

Natalie 11.07.2024 17:53

Очень хорошее решение

davidebacci 11.07.2024 18:04

Всем, кому нужно использовать код, мне пришлось щелкнуть ячейку с надписью «Таблица», чтобы получить результаты.

Natalie 11.07.2024 18:09

Да. Вам нужно нажать «Таблица», и она появится автоматически. Забыл упомянуть об этом в комментарии.

ttruhcheva 11.07.2024 18:11

Связанная альтернатива

Добавить столбец.. пользовательский столбец... с

= List.Sum(List.Transform(Record.FieldValues(_), each if _ = "Y" then 1 else 0))

Чтобы создать все столбцы «результатов», мы добавляем «запись», содержащую все столбцы результатов, а затем расширяем ее.

Начнем с таблицы, содержащей ТОЛЬКО столбцы с вопросами:

вы можете использовать этот код, вставленный в расширенный редактор:

let

//Change Source line to reflect your actual data source
    
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WilTSAWM/RwgRqxOt5AfngyVjYwE = ", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Question 1" = _t, #"Question 2" = _t, #"Question 3" = _t, #"Question 4" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source, List.Transform(Table.ColumnNames(Source), each {_, type text})),

    #"Add Results" = Table.AddColumn(#"Changed Type", "Results", (r)=>
        let 
            Ycount=List.Count(List.Select(Record.FieldValues(r), each _ = "Y")),
            Ncount=List.Count(List.Select(Record.FieldValues(r), each _ = "N")),
            TotalQ = Ycount+Ncount,
            Passed = Ycount/TotalQ
        in 
            [YES=Ycount, NO=Ncount, TOTAL Qs=TotalQ, #"% of audit passed = "=Passed],
            type[YES=Int64.Type, NO=Int64.Type, TOTAL Qs=Int64.Type, #"% of audit passed = "=Percentage.Type]
            ),
    #"Expanded Results" = Table.ExpandRecordColumn(#"Add Results", "Results", {"YES", "NO", "TOTAL Qs", "% of audit passed = "}) 
            
in
    #"Expanded Results"

Результаты:

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