У меня есть столбец, в котором каждое значение повторяется дважды. И у каждого значения есть своя доля (входные данные). Мне нужно вычислить среднюю долю среди первого вхождения значений в первом столбце и среднюю для второго вхождения для каждой подгруппы (подгруппы различаются по первой части имени: например, входной автомобиль 1, автомобиль 1, автомобиль 2, машина 2, велосипед 1, велосипед 1, велосипед 2, велосипед 2 и т. д. (слово + число показано на рисунке. Для этого я создал индекс вхождения. Однако при объединении). данные из новой таблицы с индексами и старой таблицы с неделями и долями, получаю что-то странное: каждое значение из первого столбца теперь повторяется не два, а четыре раза. Как это исправить? Также стоит отметить, что мне нужно среднее значение не по всему столбцу, а по каждой подгруппе столбца.
Я создал индекс вхождений, как предложено здесь: ссылка Щелкните правой кнопкой мыши, сгруппируйте по, сохраните имя, используйте операцию «Все строки». Измените код в окне с
= Table.Group(#"Измененный тип", {"Идентификатор группы"}, {{"Count",each , type table ....
к = Table.Group(#"Измененный тип", {"Идентификатор группы"}, {{"Count", каждый Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type), таблица типов}})
вы можете попробовать это в PQ, чтобы создать столбец индекса и столбец нового имени.
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Share", type number}}),
Custom1 = Table.Group(#"Changed Type", {"Name"}, {{"Count", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type), type table}}),
#"Expanded Count" = Table.ExpandTableColumn(Custom1, "Count", {"Share", "Index"}, {"Share", "Index"}),
#"Added Custom" = Table.AddColumn(#"Expanded Count", "Name2", each Text.Remove([Name],{"0".."9"}))
in
#"Added Custom"
тогда вы можете создать вычисляемый столбец в PP
=CALCULATE(AVERAGE([Share]),ALLEXCEPT(Table1_1,Table1_1[Name2],Table1_1[Index]))
Я попытался добавить столбец в образец данных
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"share", type number}}),
Custom1 = Table.Group(#"Changed Type", {"Name"}, {{"Count", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type), type table}}),
#"Expanded Count" = Table.ExpandTableColumn(Custom1, "Count", {"column", "share", "Index"}, {"column", "share", "Index"})
in
#"Expanded Count"
я обновил свой ответ. Пожалуйста, посмотрите последнюю часть, я добавил один столбец и получил результат.
Я это сделал и действительно получил результат. Но потом я заметил, что в таблице теперь гораздо больше строк: у меня было 7 тысяч строк, теперь у меня миллион, и после 7 тысяч снова показывает первую строку, вторую строку и т. д.
Я понял! Я зашел в редактор, щелкнул значок «Таблица» перед заголовком первого столбца, нажал «Сохранить верхние строки» и ввел число. Спасибо!!!!!🌻 Интересно, есть ли другой способ решить проблему, потому что получить миллион строк на моем личном ПК (не на более мощном ПК с работы) может быть затруднительно.
пожалуйста
Есть ли способ создать вычисляемый столбец средних долей без использования PP, но с помощью Power Query?
Вы можете сделать все это сразу в powerquery, сохранив любые дополнительные столбцы.
let Source = Excel.CurrentWorkbook(){[Name = "Table4"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index2", 0, 1, Int64.Type), //for resorting at end can be removed
#"Inserted Modulo" = Table.AddColumn(#"Added Index", "Index", each Number.Mod([Index2], 2), type number),
#"Added Custom" = Table.AddColumn(#"Inserted Modulo", "Prefix", each Text.BeforeDelimiter([Name], " ")),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Index", "Prefix"}, {{"Average Share", each List.Average([Share]), type nullable number}, {"data", each _, type table}}),
ColumnsToExpand =List.RemoveItems(List.Distinct(List.Combine(List.Transform(Table.Column(#"Grouped Rows", "data"), each if _ is table then Table.ColumnNames(_) else {}))),Table.ColumnNames(#"Grouped Rows")),
#"Expanded data" = Table.ExpandTableColumn( #"Grouped Rows", "data",ColumnsToExpand,ColumnsToExpand),
#"Sorted Rows" = Table.Buffer(Table.Sort(#"Expanded data",{{"Index2", Order.Ascending}})), //resorts, can be removed
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index2", "Prefix"})
in #"Removed Columns"
Большое спасибо!
Большое спасибо! 🙏Также у меня в таблице есть и другие столбцы (просто для простоты не добавила их на картинку). Я создал индекс, как вы предложили. Но, к сожалению, другие мои столбцы стали выглядеть странно (похоже на третью таблицу на картинке). Есть ли способ избежать изменения других столбцов?