我尝试使用here代码来查找所有与dplyr
重复的元素,如下所示:
library(dplyr)
mtcars %>%
mutate(cyl.dup = cyl[duplicated(cyl) | duplicated(cyl, from.last = TRUE)])
如何将here表示的代码转换为dplyr
表示的所有重复元素?我上面的代码只是抛出一个错误?或者更好的是,有没有另一个函数可以比复杂的x[duplicated(x) | duplicated(x, from.last = TRUE)])
方法更简洁地实现这一点?
9条答案
按热度按时间ca1c2owp1#
我想你可以使用
filter
来实现这个目的:一个小例子(注意,我添加了
summarize()
来证明结果数据集不包含具有重复'carb'的行。我使用'carb'而不是'cyl',因为'carb'有唯一的值,而'cyl'没有):qltillow2#
另一种解决方案是使用
janitor
package:iklwldmw3#
我们可以用dqr找到重复的元素,如下所示。
hvvq6cgz4#
原始帖子包含使用related answer解决方案的错误。在给出的例子中,当你在mutate内部使用这个解决方案时,它会尝试将cyl向量子集化,而cyl向量的长度将与mtcars向量的长度不同。
相反,你可以使用下面的例子,filter返回所有重复的元素,或者使用ifelse进行mutate来创建一个可以在以后过滤的虚拟变量:
dldeef675#
jtoj6r0c6#
在包含列的数据框中查找重复值
bvuwiixz7#
可以使用duplicated()创建布尔掩码:
并通过方括号索引:
注意:这种方法是最接近Pandas的方法,可以用R和dupiter来完成:
kq0g1dla8#
如果要使用多个列对重复项进行分组,
inn6fuwd9#
在
xlr
包中有一个函数repeated
。参见:https://rpubs.com/Eauleaf/xlr