我正在尝试过滤出大型数据集中某个值范围内的值。我这里有一个值数据的小摘录:
Chng.1 Chng.2 Length Post Index
117,200 117,400 200 bf 1
118,800 119,000 200 bf 2
118,939 118,949 10 bo 3
119,863 119,873 10 bo 4
120,400 121,200 800 bf 5
120,869 120,879 10 bf 6
121,400 121,600 200 bo 7
128,800 129,200 400 bo 8
129,065 129,075 10 bo 9
在这个数据集中,我希望过滤掉索引6和9,因为它们已经包含在一个范围内。
即索引6 (120,869-120,879)的桩号在索引5 (120,400-121,200)的桩号范围内,并且它们都是"bf“之后。索引9也是如此,它在索引8的范围内,并分享帖子"bo“。
谢谢你。
发布于 2019-10-18 10:41:20
具体地说,在您的情况下(后续范围在前一个范围内),您可以使用以下代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
sort = Table.Sort(Source, List.Transform({"Post", "Chng.1", "Chng.2"}, each {_, 0})),
group = Table.Group(sort, Table.ColumnNames(Source), {}, 0,
(a,b)=>Number.From(b[Post] <> a[Post] or b[Chng.1] >= a[Chng.2]))
in
group
否则(范围相交)尝试此代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
cols = {"Post", "Chng.1", "Chng.2"},
sort = Table.Sort(Source, List.Transform(cols, each {_, 0})),
group = Table.Group(sort, cols,
{{"Chng.1_new", each List.Min([Chng.1])},
{"Chng.2_new", each List.Max([Chng.2])}}, 0,
(a,b)=>Number.From(b[Post] <> a[Post] or b[Chng.1] >= a[Chng.2])),
add = Table.AddColumn(group, "Length", each ([Chng.2_new] - [Chng.1_new])*1000), //multiplication by 1000 is optional, depends on your decimal separator
remove = Table.RemoveColumns(add, List.Skip(cols))
in
remove
https://stackoverflow.com/questions/58445149
复制相似问题