Forum Discussion
Merge two rows based on certain conditions
- Anonymous1 year ago
Thank you for your help! I have tried running your code, it takes relatively long to run, compared to mine. But yes, your code also works. Thanks!
I have written a code that more or less achieves what I want:
let Source = R3010, #"FilteredRows1" = Table.SelectRows(Source, each [Event Frame End Time] <> null), #"Added Index" = Table.AddIndexColumn(#"FilteredRows1", "Index", 0, 1, Int64.Type), #"Added TimeDifference" = Table.AddColumn(#"Added Index", "TimeDifference", each if [Index] < Table.RowCount(#"Added Index") - 1 then Duration.From(Table.Column(#"Added Index", "Event Frame Start Time"){[Index]+1} - [Event Frame End Time]) else #duration(0,0,0,0)), #"AddCombineFlag" = Table.AddColumn(#"Added TimeDifference", "Combine Flag", each if [TimeDifference] = #duration(0,0,0,0) then "Last" else if [TimeDifference] < #duration(0, 1, 0, 0) then "Combine" else "Keep"), #"CombinedRows1" = Table.AddColumn(#"AddCombineFlag", "CombinedLevelDrop", each if [Combine Flag] = "Combine" then [LevelDifference] + #"AddCombineFlag"[LevelDifference]{[Index] + 1} else [LevelDifference]), #"CombinedRows2" = Table.AddColumn(#"CombinedRows1", "CorrectEndTime", each if [Combine Flag] = "Combine" then #"CombinedRows1"[Event Frame End Time]{[Index]+1} else [Event Frame End Time]), #"Removed Columns" = Table.RemoveColumns(CombinedRows2,{"Event Frame End Time", "LevelDifference"}), #"AddPreviousCombineFlag" = Table.AddColumn(#"Removed Columns", "Previous Combine Flag", each if [Index] > 0 then #"Removed Columns"[Combine Flag]{[Index] - 1} else null), #"FilteredRows" = Table.SelectRows(AddPreviousCombineFlag, each ([Previous Combine Flag] <> "Combine")), #"Reordered Columns" = Table.ReorderColumns(FilteredRows,{"Id", "30yv146 Open", "Event Frame Start Time", "Event Frame Duration", "Time", "PIBSA Grade", "R-3010", "PIIntTSTicks", "PIIntShapeID", "Index", "TimeDifference", "CombinedLevelDrop", "CorrectEndTime", "Combine Flag", "Previous Combine Flag"}), #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"CombinedLevelDrop", "LevelDifference"}, {"CorrectEndTime", "Event Frame EndTime"}}), #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns",{"Combine Flag", "Previous Combine Flag"}), #"Reordered Columns1" = Table.ReorderColumns(#"Removed Columns1",{"Id", "30yv146 Open", "Event Frame Start Time", "Event Frame EndTime", "Event Frame Duration", "Time", "PIBSA Grade", "R-3010", "PIIntTSTicks", "PIIntShapeID", "Index", "TimeDifference", "LevelDifference"}), #"Renamed Columns1" = Table.RenameColumns(#"Reordered Columns1",{{"Event Frame EndTime", "Event Frame End Time"}}), #"Reordered Columns2" = Table.ReorderColumns(#"Renamed Columns1",{"Id", "30yv146 Open", "Event Frame Start Time", "Event Frame End Time", "Event Frame Duration", "Time", "LevelDifference", "PIBSA Grade", "R-3010", "PIIntTSTicks", "PIIntShapeID", "Index", "TimeDifference"}), #"Renamed Columns2" = Table.RenameColumns(#"Reordered Columns2",{{"LevelDifference", "R-3010 Level Increase"}}), #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns2",{"Index", "TimeDifference"}), #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns2",{{"R-3010 Level Increase", type number}}), #"Renamed Columns3" = Table.RenameColumns(#"Changed Type",{{"R-3010", "Reactor"}}) in #"Renamed Columns3"
Please post some sample data of your problem and of the result you need
- Anonymous1 year agoNot applicable
The image below is a screenshot of the table containing the data of interest:
- Anonymous1 year agoNot applicable
For example, let's say we have these two rows:
First column is the "Event Frame Start Time" and the 2nd column is "Event Frame End Time". The last column is "T-1002 Level Drop". The "Event Frame Start Time" of the 2nd row is less than hour after the "Event Frame End Time" of the 1st row. In this case, the desired code would merge these two rows:
We woud keep the entries in red rectangles. For the last column, the entry would be the sum of the two numbers. All the other columns are not relevant and can be deleted.
- Omid_Motamedise1 year agoSuper User
post the data in type table here