因此,我的原始数据集的结构是,每行代表一条街道,然后有三组列代表对设计特征更改的建议(例如添加树木),然后是另一列,其中包含数字(表示该更改的重要性),然后是另一列,解释是否增加或减少该设计特征。这三列最多可能有 15 组。但是,现在,列的顺序是随机的 - 但我希望最重要的特征(得分最高)首先显示(最左边的列),得分最低的特征最后显示(最右边的列),但列的顺序仍然必须是特征、分数、增加/减少等。
所以我认为这太难了 - 所以我想我会先转置它,这样我就可以在三行而不是列中获得特征、分数、增加/减少的值。然后我发现我可以对行进行分组(列也是一样,但我仍然认为对行进行分组更容易)。我以为通过对行进行分组,我可以按分数排序,这样就可以将特征、分数、增加/减少保持在一起,但按得分最高到最低的特征排序,但这行不通。
我附上了原始配置(列)与转置配置(行)的示例数据集的图片,以帮助解释我上面的意思。有什么想法吗?
显示我被困在哪里。
再次尝试 - 仍然卡住。这是我将示例数据复制/粘贴到 Power 查询中时看到的内容:
答案1
我建议您使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中可用的 Power Query。
算法类似:
- 转置
- 以现在的第二列(即数据中的第二行)为中心
- 在 Power Query 中,您可以进行数据透视而不进行聚合。
- 这将为您提供单独的列
feature
,score
以及direction
- 然后仅按
score
列排序
使用 Power Query
- 在数据表中选择一些单元格
Data => Get&Transform => from Table/Range
或者from within sheet
- 当 PQ 编辑器打开时:
Home => Advanced Editor
- 记下表格姓名在第 2 行
- 将下面的 M 代码粘贴到您所看到的位置
- 将第 2 行的表名改回最初生成的表名。
- 阅读评论并探索
Applied Steps
以了解算法
M 代码
let
//change next lines to reflect actual data source
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}}),
//Transpose, then pivot and sort
#"Transposed Table" = Table.Transpose(#"Changed Type"),
#"Pivoted Column" = Table.Pivot(#"Transposed Table", List.Distinct(#"Transposed Table"[Column2]), "Column2", "Column3"),
#"Sorted Rows" = Table.Sort(#"Pivoted Column",{{"score", Order.Descending}})
in
#"Sorted Rows"