今天看到群里面有童鞋问了一个问题:如何查找数据框中的重复值?这个问题问的非常好,而且很有趣。查找重复值一般大家都会想到unique()
函数,distinct()
函数,duplicated()
函数等等。但是这些函数一般只能找出每组重复数据中的一个,并不能指出哪些数据是重复的。怎么办?有个童鞋给出了一个非常有创意的解决方案。下面来看看代码:
|
|
|
|
可以看到,数据框中的第1,第2行是完全相同的,第4,第5行也是完全相同的。数据框小肉眼可以一眼看出来,但是一旦数据框有成千上万行,估计眼睛看瞎了也看出来,^_^。下面我们的任务就找出第1,2,4,5行数据。
该童鞋给出的解决方案是这样的:
|
|
|
|
上面代码中关键的步骤在于对所有的变量进行分组,以及用mutate()
而不是summarize()
。下面我们来看看为什么要这样做。
|
|
|
|
|
|
|
|
看到两者的结果,豁然开朗了吧。原来聚合函数也能这么用!!
上面的解法非常巧妙,我自己是没有想到这么做的。我也给出了一种解决方案,只不过既没有上面代码的优雅,运行效率可能也不如上面的代码。
我的代码如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
相比较而言,我的代码就要繁琐多了。