我需要创建一个新列来标识相同ID的最后一个小时行,但不能丢失其他具有相同ID的行。
你能帮我吗?!
谢谢!
当前数据:
ID Date Hour
1562 13Oct 11:00
1562 13Oct 15:00
1562 13Oct 22:00
所需结果:
ID Date Hour What I Need (new column)
1562 13Oct 11:00 0
1562 13Oct 15:00 0
1562 13Oct 22:00 1
答案 0 :(得分:1)
提供此数据:
ID Date Hour
1562 2019-10-13 11:00
1562 2019-10-13 15:00
1562 2019-10-13 22:00
1563 2019-10-13 15:00
1563 2019-10-13 22:00
1562 2019-10-14 11:00
您可以按照以下步骤创建它:
ID Date Hour Max_Row
1562 2019-10-13 11:00 0
1562 2019-10-13 15:00 0
1562 2019-10-13 22:00 1
1563 2019-10-13 15:00 0
1563 2019-10-13 22:00 1
1562 2019-10-14 11:00 1
ID
和Date
分组,添加两个名为All_Rows
的新列
使用所有行操作,而Max_H
使用最大操作
小时。All_Rows
的所有行。IF Max_H = all_rows.Hour THEN 1 ELSE 0
。 所有操作都使用用户界面完成,但是代码如下:
let
Source = Table.FromRows(// code genereted from pasting above values //)
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID", "Date"}, {{"All_Rows", each _, type table [ID=number, Date=date, Hour=time]}, {"Max_H", each List.Max([Hour]), type time}}),
#"Expanded All_Rows" = Table.ExpandTableColumn(#"Grouped Rows", "All_Rows", {"ID", "Date", "Hour"}, {"All_Rows.ID", "All_Rows.Date", "All_Rows.Hour"}),
#"Added Conditional Column" = Table.AddColumn(#"Expanded All_Rows", "Max_Row", each if [All_Rows.Hour] = [Max_H] then 1 else 0),
#"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"All_Rows.Date", "All_Rows.ID", "Max_H"})
in
#"Removed Columns"
请注意,最大值是同时为ID
和Date
计算的,但是我想您可以弄清楚如果只想为ID
做该怎么办。