I have the following example of a data set, I want to have them horizontally. I tried grouping by "sol_ped", "pos", and "name" , then creating a custom column with Table.Column but it only lets me add one field for example "prec" and I need two or more fields. Any idea how I can do?
sample dataset
sol_ped | pos | name | prec | cat |
---|---|---|---|---|
11 | 1 | one | 11.01 | a |
11 | 1 | one | 14.00 | b |
11 | 1 | one | 7.00 | c |
11 | 2 | two | 8.12 | d |
desired result
sol_ped | pos | name | prec1 | cat1 | prec2 | cat2 | prec3 | cat3 | prec4 | cat4 |
---|---|---|---|---|---|---|---|---|---|---|
11 | 1 | one | 11.01 | a | 14.00 | b | 7.00 | c | 0.00 | na |
11 | 2 | two | 18.02 | d | 18.12 | na | na | na | na | na |
In powerquery you can try
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"sol_ped", "pos", "name"}, "Attribute", "Value"),
#"Grouped Rows" = Table.Group(#"Unpivoted Other Columns", {"sol_ped", "pos", "name"}, {
{"data", each
Table.AddColumn(
Table.AddColumn(
Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type)
, "Count", each Number.IntegerDivide([Index], 2), Int64.Type)
,"MergeName", each [Attribute]&Text.From([Count]+1 ))
, type table }}),
#"Expanded data" = Table.ExpandTableColumn(#"Grouped Rows", "data", {"Value", "MergeName"}, {"Value", "MergeName"}),
#"Pivoted Column" = Table.Pivot(#"Expanded data", List.Distinct(#"Expanded data"[MergeName]), "MergeName", "Value"),
#"Change Type"= Table.TransformColumnTypes(#"Pivoted Column",List.Transform(List.Select(Table.ColumnNames(#"Pivoted Column"), each Text.StartsWith(_,"prec")),each {_, type number}))
in #"Change Type"