Нужна сводная таблица для столбцов со значениями, разделенными запятыми - PullRequest
0 голосов
/ 16 января 2019

Итак, я нашел пару других решений похожих вопросов, которые у меня есть, но не совсем точные. Я интерпретирую результаты опроса в Excel, где инструмент опроса (Qualtrics) поместил ответы на несколько выбранных вопросов («выбрать все подходящие») в одну ячейку, разделив их запятыми. Мне нужны подсчеты отдельных ответов, рассчитанные в сводной таблице, где я также возьму итоги по некоторым демографическим данным респондентов, которые я собираюсь добавить в электронную таблицу ответов. То, что я пытаюсь сделать, очень похоже на это:

Разделить разделенные запятыми записи на новые строки

Однако на моем листе будет несколько столбцов с разделенными запятыми ответами, например:

Existing data

.... и мне нужно это в формате столбца, чтобы я мог Pivot и считать. Как я уже упоминал, я собираюсь добавить некоторые атрибутные данные (данные HR, и поэтому я не могу импортировать их в Qualtrics - не могу отправить за пределы компании), поэтому мне все равно нужно будет связать человека с ответом. Однако, если есть сценарий или команда, которая может выполнить и разделить это для меня, я не уверен, как он будет обрабатывать разные числа ответов от столбца к столбцу для создания необходимых строк (как Билл и Карен в примере) , Нужно ли мне сначала иметь столбец с самой длинной ячейкой CSV и так далее? Однако это будет выглядеть примерно так:

Desired Data

Есть ли что-то, что я могу сделать для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Не уверен, что именно вы хотите достичь (может быть слишком много вещей одновременно), по крайней мере, для первой части вашего вопроса: Количество ответов на категорию вы можете сделать так:

Для каждого столбца ответа создайте столбец подсчета, например:

Имя, Response_column_a, count_a, ...

Формула для подсчета: счет запятой + 1

В Excel это может быть достигнуто с помощью следующей формулы: enter image description here

Теперь у вас есть: 1) количество ответов 2) может генерировать общее количество ответов для каждой категории, например, количество ответов А для Карен.

0 голосов
/ 16 января 2019

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

Вы можете легко преобразовать свои данные с помощью Power Query. Загрузите данные в Power Query Editor, затем разделите каждый столбец вопроса разделителем "," (запятая с последующим пробелом). Это разделит каждый ответ на отдельный столбец с вопросом в заголовке, добавленным .1, .2 и т. Д.

Затем выберите имя столбца и нажмите «Отключить другие столбцы». Заголовки вопросов теперь будут в колонке атрибутов. Разделить этот столбец атрибута разделителем "." (точка) и удалите столбец с разделенными числами.

Наконец, переименуйте столбцы в Вопрос и ответ.

Вот код М, который генерируется при этом.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"like", type text}, {"dislike", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "dislike", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), {"dislike.1", "dislike.2", "dislike.3", "dislike.4", "dislike.5"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"dislike.1", type text}, {"dislike.2", type text}, {"dislike.3", type text}, {"dislike.4", type text}, {"dislike.5", type text}}),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "like", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), {"like.1", "like.2", "like.3", "like.4"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"like.1", type text}, {"like.2", type text}, {"like.3", type text}, {"like.4", type text}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type2", {"Name"}, "Attribute", "Value"),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Attribute.1", "Attribute.2"}),
    #"Changed Type3" = Table.TransformColumnTypes(#"Split Column by Delimiter2",{{"Attribute.1", type text}, {"Attribute.2", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type3",{"Attribute.2"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Attribute.1", "question"}, {"Value", "Answer"}})
in
    #"Renamed Columns"

Полученная таблица выглядит следующим образом:

enter image description here

Если ваши исходные данные получают больше строк, просто обновите запрос.

Теперь у вас есть таблица, которую можно использовать в сводных таблицах без ущерба для каких-либо данных.

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