- 问题 -
怎么对数量按条件进行替换?比如,如果小于2000,则置0,大于5000则表示为5000,其他的保留原样(如Excel中公式所示):
- 解法 -
这个问题在PQ中的解法其实有两种,1种如Excel中的增加列,做条件判断取相应的结果;另一种是直接在原列上做替换。
1、增加条件列解法
这个方法非常简单,用最基础的if...then...else...语句知识(甚至可以直接用条件列操作得到):
2、直接替换解法
因为最终结果是对原列数据进行替换,所以,可以考虑直接对原列进行替换的方法,首先我们通过操作替换功能生成步骤公式(其中要查找的值和替换为的值可以随便填,因为这个问题里用不着):
生成公式如下图所示:
我们只需要修改其中的Replacer.ReplaceValue函数,修改如下:
为什么这样修改?关键是要理解Table.ReplaceValue这个函数几个参数之间的关系,具体可以参考文章《10万行30列数据乘上系数,能快一些吗?含“函数作为参数”的触类旁通方法》,其中有比较详细的解析。
- 一点点心得 -
上面两个解法中,方法1非常简单直观,也完全符合我们一贯的操作习惯,方法2则应该是PQ里因为Table.ReplaceValue函数的支持而比较独有的解法,看起来也显得更加高级一些,但是,对于比较多的朋友来说可能并不会自然地第一时间去选它。
个人觉得,两种方法都挺好,但从我在大多数场合下所遇到的实际情况来看,更推荐第1种简单直观的解法。
正如前面所说的,在习惯下就能直接用起来的方法,其实能节省很多时间,因为你不需要做太多专门的构思或者去做一些尝试和验证。
另一方面,在数据分析的过程中,大多数的情况下,我们会在一定程度上保留这种原始的数据列,方便在后续需要做数据的检查、验证或增加条件进一步处理,除非真的对数据储存量的大小或数据运算效率有很大的影响,个人建议尽量保留。
当然,一切都应以实际需要为准,正如前面文章《再用关键词统计这个案例,把3种算法优化思路讲清楚。》所说的,没有什么金科玉律,这只是一点儿个人经验,仅供借鉴。