删除数据框中的重复项,列表 R 除外

Remove duplicates in a dataframe except list R

我想删除数据框列的重复项,但保留一些以前存储在列表中的元素。

my_df <- data.frame(Municipality=c('a', 'b', 'c', 'd', 'a', 'e', 'd','f','g','b','a'),
                    state=c('ac', 'pe', 'pi', 'pi', 'ac', 'am', 'pi','sp','sp','pi','ac'),
                    date=c('2006', '2007', '2007', '2008', '2009', '2010', '2010','2011','2012','2013','2013'))
desired_df <- data.frame(Municipality=c('a', 'b', 'c', 'd','e','f','g','b','a'),
                    state=c('ac', 'pe', 'pi', 'pi', 'am','sp','sp','pi','ac'),
                    date=c('2006', '2007', '2007', '2008', '2010','2011','2012','2013','2013'))  

我尝试创建一个要保留的市政府列表(2013 年的 b 和 a),然后删除除了之前列表中的重复项。类似的东西:

municipality_twice_keep<-as.data.frame(c("a", "b"))
desired_df2=my_df[!(my_df$Municipality %in% municipality_twice_keep & my_df$date=='2013'),]                   

然而,没有任何改变。你能告诉我吗?

您可以删除日期不是 2013 的行中的重复行:

my_df[!duplicated(my_df$Municipality[my_df$date != 2013]), ]

   Municipality state date
1             a    ac 2006
2             b    pe 2007
3             c    pi 2007
4             d    pi 2008
6             e    am 2010
8             f    sp 2011
9             g    sp 2012
10            b    pi 2013
11            a    ac 2013