我有一个大型数据库,其中有部分重复的行,我尝试在dplyr中使用条件语句过滤器来删除这些部分重复的行。
**目标:**我希望删除所有包含重复的a1和id1组合且var1等于0的行。为了实现这一点,我尝试在筛选函数中使用duplicated()调用沿着条件语句。
**问题:**下面我使用的代码似乎忽略了var1等于零的最后一个条件。我尝试了两种不同的过滤方法来获得所需的结果,但都无济于事。我的duplicated()调用有什么问题吗?我应该使用distinct()吗?
library(dplyr)
a1 <- c('adam', 'adam', 'adam', 'megan', 'megan', 'megan', 'jen', 'jen', 'jen')
id1 <- c('a', 'a', 'b', 'a', 'b', 'b', 'a', 'b', 'c')
var1 <- as.numeric(c('0', '3.2', '3', '2.2', '1.1', '0', '1.2', '2.4','3.1'))
test_df <- data.frame(a1, id1, var1)
#code to get rid of duplicates
test_df2 <- test_df %>%
filter(!(duplicated(id1) & duplicated(a1) & var1 == 0))
#alternative code
test_df3 <- test_df
test_df3$new_id <- with(test_df3, paste0(a1, sep = "-", id1))
test_df3 <- test_df3 %>%
filter(!(duplicated(new_id) & var1 == 0))
这是我得到的一张照片:
以下是所需的结果:
1条答案
按热度按时间sgtfey8w1#
我们可以使用
group_by
和summarise
: