用R中的distinct()dplyr删除重复项

时间:2019-02-21 23:06:53

标签: r

使用dplyr库
1.我需要在df1中的mtcars表中创建2列的新对象
2.在df2中,需要df1中的10到20
3.需要从两列df2中删除重复项

df= mtcars %>% select(mpg,hp)
df2= slice(df,10:20)
distinct(df2, mpg,hp, .keep_all=TRUE)

在这里,distinct()在没有任何重复的情况下不会打印df2,它与所有值相同。也许它必须与列表类型有关。另一个观察结果是在df中将汽车名称用作行名称,但在df2中,行名称只是数字值。

如何使用dplyr删除两列的重复项?

1 个答案:

答案 0 :(得分:0)

我的理解是我们需要将不同的调用分开。如果我们使用distinct(df2, mpg,hp, .keep_all=TRUE),则要求在同一行的两列中都没有重复的列,这在给定的数据集中不会发生,因此将返回所有内容。

如果我们首先返回hp中所有没有重复的行,然后获取该数据,而仅返回mpg中没有重复的行,则会得到预期的结果。

library(dplyr)

df= mtcars %>% select(mpg,hp)
df2= slice(df,10:20)
df3<-distinct(df2, hp, .keep_all=TRUE)
df4<-distinct(df3, mpg, .keep_all=TRUE)

> df4
   mpg  hp
1 19.2 123
2 16.4 180
3 10.4 205
4 14.7 230
5 32.4  66
6 30.4  52
7 33.9  65