excel - 对于 Power Query 中列中每个值第一次出现的情况,返回 1,否则返回 0

标签 excel powerquery countif m

我有一个数据列表,当每个值第一次出现时,我想在不同的列中返回 1。我可以在 Excel 表中使用公式“=(COUNTIF($A$2:$A2,$A2)=1)+0”执行此操作,但我不知道如何在 Power Query 中执行此操作。可以在此处查看示例:

<表类=“s-表”> <标题> 用户 ID 第一次? <正文> 123 1 123 0 123 0 234 1 345 1 345 0 456 1 567 1 567 0 567 0 567 0

在我的表格中,用户 ID 显然不按数字顺序排列,但此示例应该显示我的目标。

我在 Power Query 中拥有所有表数据,这是我不知道该怎么做的最后一件事。我是 Power Query 的新手,并且已经四处寻找解决方案,但我一直无法找到解决方案,因此我们将不胜感激。数据并不像表格那么简单。还有更多包含不同数据的列,但这是我正在查看的列。谢谢!

最佳答案

powerquery 中的一种方法是移位列,对于大型数据集,它比索引快得多

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
// create shifted column
    shiftedList = {null} & List.RemoveLastN(Source[User ID],1),
    custom1 = Table.ToColumns(Source) & {shiftedList},
    custom2 = Table.FromColumns(custom1,Table.ColumnNames(Source) & {"Next Row"}),
#"Added Custom" = Table.AddColumn(custom2, "First Instance?", each if [User ID]=[Next Row] then 0 else 1),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Next Row"})
in #"Removed Columns"

或者您可以使用分组

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"User ID"}, {{"data", each Table.RemoveColumns(Table.AddColumn(Table.AddIndexColumn(_, "Index", 0, 1, Int64.Type), "First Instance?", each if [Index]=0 then 1 else 0),{"Index"}), type table }}),
#"Expanded data" = Table.ExpandTableColumn(#"Grouped Rows", "data", {"First Instance?"}, {"First Instance?"})
in  #"Expanded data"

关于excel - 对于 Power Query 中列中每个值第一次出现的情况,返回 1,否则返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73470083/

相关文章:

php - 用不同的值更新现有表,PHP?

excel - 使用 Power Query 按特定顺序排序

excel - 多列中唯一值的计数

google-sheets - Countif 与区分大小写的 google-sheets

excel - 根据每行中两个单元格中的值格式化行

python - 用 Pandas 重命名excel中的特定列

在 Excel 中自动单击“确定”的 VBA 代码

powerbi - Power Query M - 我们无法将值 null 转换为逻辑类型

powerbi - 从一个表获取值并根据其他列放入其他表 DAX/Power Query M

excel - COUNTIFS 包括整列而不是单个项目