2016-12-16 262 views
0

我的數據集(DF)的樣子,刪除重複確保NA的值R

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的行,有些幫助會很好,謝謝。

+1

你嘗試'complete.cases()'?您可以先通過'complete.cases()'過濾它,然後刪除重複項。 – Sotos

+0

您也可以使用'order'。 NA將移動到最下面:'df < - df [with(df,order(ID,Score,Ranking)),]; df < - df [!duplicate(df [1:2]),]'。 – lmo

回答

1

首先,推來港持續與na.last = T

df<-df[with(df, order(ID, Name, Score, Ranking),na.last = T),] 

然後做那些重複的去除與fromLast = FALSE說法:

df <- df[!duplicated(df[1:2],fromLast = FALSE),] 
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 
1

使用dplyr

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