今天,视频群里的小伙伴们提了个问题:如何将B列和C列数据生成相应的公有(交集)、独有(补集)、所有(并集)?
这个问题咋一看挺简单的,从思路上讲,可以分为2种:
1、采用操作的方式,可以直接将两列数据分成两个表然后做合并查询;
2、直接用列表(List)的交集、并集、补集(交并补)相关函数
但是,细看这个问题,其实很多陷阱,也或者说,有很多问题是需要澄清的,因为,对于列表的交并补,在列表中存在重复值时,会有很多种情况!以下,以并集为例进行说明。
情况1:直接将两个列表按原样合在一起,即不对重复值做任何处理,使用函数List.Combine,如下图所示:
情况2:列表之间去重,但列表内保留重复项,使用函数List.Union,如下图所示:
情况3:合并后全去重,这时可以结合List.Distinct函数来实现,如下图所示:
总的来说,列表的运算可能会因为有重复值的存在而出现各种需要,以上3种只是比较典型的情况,谨以此提请大家注意,实际工作中可能还有很多特殊需要,应根据不同情况进行理解、尝试,从而得到自己想要的结果。
同时,由此延伸出来一个关于老生常谈的问题——该怎么提问?
每个人对看上去是同一个问题的理解都可能不同,这也是为什么一再要求大家提问时,不仅要对问题进行描述,还应该附上相应的数据、模拟结果等,以方便愿意热心帮忙解决问题的小伙伴们能迅速理解并从最大程度上减少理解偏差。
五一劳动节快乐
今年的五一,也许是最特殊的一个,疫情已经缓解的地方,确保不聚集、保持社交距离等前提下,出去走走,和家人聚聚,放松放松。