如果其中三列已经出现在另一行中,则从数据框中删除一行

时间:2019-10-27 01:20:04

标签: r dataframe

我有一个城市人口的数据框。在该数据中,我存储城市名称,县和州。不幸的是,在我的数据中有一个条目的重复项。重复项并不完全相同,因为它们所包含的城市位置坐标或人口略有不同。因此,典型的distinct()在这里不起作用。有没有办法我可以删除并删除具有相同城市,县和州的其他行,但是不在乎其他变量是唯一的还是共享的?

1 个答案:

答案 0 :(得分:1)

要解释我的评论并根据您的要求将其转变为答案:-

df[!duplicated(df[,c('city','country', 'state')]),] 
  

df[,c('city','country', 'state')]

子集citycountrystate的所有行。 r中的一个子集用作data_frame[row, column]。将row选择器保留为空将返回数据框中的所有行,并且由于我们要传递多个列,因此将其包装在c()中。

  

!duplicated()

如果TRUEcitycountry不是重复的,则返回逻辑向量state,如果是重复的,则返回FALSE

然后,将其包装在df中作为row selector并返回所有columns

  

df[!duplicated(df[,c('city','country', 'state')]),]

!duplicated(df[,c('city','country', 'state')])将用作行选择器,而将列选择器保留为空将返回所有列。 !是否定标记。

简而言之,将返回!duplicated(df[,c('city','country', 'state')])TRUE(不重复的行)的所有列。

希望您可以以此为基础。