Power Query:根据其他列替换值

Posted

技术标签:

【中文标题】Power Query:根据其他列替换值【英文标题】:Power Query: Replace Value based on other column 【发布时间】:2018-09-26 21:37:48 【问题描述】:

我有一个我正在合作的学位课程和大学的数据集,但近年来有几所大学的名称发生了变化。

+------+------------------------------+------------------+
| Year |           College            |     Program      |
+------+------------------------------+------------------+
| 2018 | College of Arts & Humanities | BA Communication |
| 2017 | College of Arts & Humanities | BA Communication |
| 2016 | College of Arts & Sciences   | BA Communication |
+------+------------------------------+------------------+

我想要做的是用最近一年的大学名称替换该程序的每个参考上的大学名称。在我上面的示例中,它只会将 2016 年更改为“艺术与人文学院”。

我对电源查询等还是很陌生,所以我对如何处理这个问题一无所知......

我可以使用信息创建一个新列,或者替换列上的文本,我只需要一种非手动方式。

还有其他人遇到过这种情况吗?或者对如何处理它有想法?任何建议将不胜感激。 :)


更新:替换值不起作用,因为一些大学被拆分并且没有简单的 A-B 转换。

当我说“几所”学院时,一所学院分为两所,另外两所被重命名。我们谈论的是一个数据集中的数千条记录,所有不同的大学。我没有任何名称更改的参考表。我已经在这个数据集上工作了 2 天,我能找到的最简单的逻辑是将每个程序上的大学名称替换为最近一年的大学名称。


最终更新:感谢@user9264230。在更新提供的代码中的引用后,看起来问题已经解决了!

【问题讨论】:

您是否尝试过使用查询编辑器主页选项卡上的“替换值”按钮(转换部分)? 你说“几所大学”——你的例子是一所大学的例子,它已经更名了吗?你的“几所”大学在同一张桌子上吗?如果是这样,您如何确定哪些“旧”和“新”大学名称相关? @Olly 最新记录有最新的大学名称。不幸的是,除了部落知识之外,新旧学院名称没有任何关系。 @AlexisOlson 不幸的是,我不能使用替换值。例如,艺术与科学学院分为两个学院:艺术与人文学院和科学与工程学院。该计划中最新的大学名称是我能找到的最简单的替代方法。 没有关系,你怎么可能自动化链接? 【参考方案1】:

您需要一个区分一所大学与另一所大学的关键字段。如果是现场程序,则使用代码

let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Grouped Rows" = Table.Group(Source, "Program", "Year", each List.Max([Year]), type number),
#"Merged Queries" = Table.NestedJoin(#"Grouped Rows","Program", "Year",Source,"Program", "Year","Source",JoinKind.LeftOuter),
List = Table.ExpandTableColumn(#"Merged Queries", "Source", "College", "College"),
#"Merged Queries1" = Table.NestedJoin(Source,"Program",List,"Program","List",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries1", "List", "College", "College.1"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Table2","College")
in #"Removed Columns"

否则,将所有 Program 实例替换为所需字段的名称,例如 Key

【讨论】:

谢谢@user9264230!我认为这成功了,我现在正在验证它。

以上是关于Power Query:根据其他列替换值的主要内容,如果未能解决你的问题,请参考以下文章

根据列表值在 Power Query 中创建条件列

删除其他列Table.SelectColumns(Power Query 之 M 语言)

Excel Power Query;如何合并值并转动问题

Power Query 根据另一列转换一列

Power Query 中是不是有一种方法可以根据基于文本值重置的两列计算运行总计?

如何根据其他列的某些值替换列的nan值