删除重复项,确保NA值为R

时间:2016-12-16 13:02:26

标签: r duplicates na missing-data

我的数据集(df)看起来像,

   ID    Name    Rating    Score  Ranking
   1     abc       3        NA      NA
   1     abc       3        12      13
   2     bcd       4        NA      NA
   2     bcd       4        19      20

我正在尝试删除使用

的重复项
   df <- df[!duplicated(df[1:2]),]

给出,

   ID    Name    Rating    Score  Ranking
   1     abc       3        NA      NA
   2     bcd       4        NA      NA

但是我想要,

   ID    Name    Rating    Score  Ranking
   1     abc       3        12      13
   2     bcd       4        19      20

如何在同时删除重复项时避免包含NA的行,一些帮助会很棒,谢谢。

3 个答案:

答案 0 :(得分:1)

首先,使用na.last = T

将NAs推送到最后
df<-df[with(df, order(ID, Name, Score, Ranking),na.last = T),]

然后使用fromLast = FALSE参数删除重复的参数:

df <- df[!duplicated(df[1:2],fromLast = FALSE),]

答案 1 :(得分:1)

使用dplyr

df <- df %>% filter(!duplicated(.[,1:2], fromLast = T))

答案 2 :(得分:0)

您可以过滤掉您不想要的观察结果(),然后使用unique()函数:

a<-unique(c(which(df[,'Score']!="NA"), which(df[,'Ranking']!="NA")))

df2<-unique(df[a,])

> df2
  ID Name Rating Score Ranking
2  1  abc      3    12      13
4  2  bcd      4    19      20