2016-07-26 14 views
1

I erstellte Tabelle haben mit folgenden Werten in Rentfernen doppelte Datensätze in Datenrahmen

Row 1 as ("Cat","Cat","Cow",NA) 
Row 2 as ("Cat","Cow","Cat",NA) 
Row 3 as ("Cat","Cat",NA,NA) 

aber ich brauche meine letzte Ausgabe mit allen doppelten Werten in jeder Zeile entfernt und auch NA-Werte entfernt Ausgang wie unten

lesen
Row 1 as ("Cat","Cow"); 
Row 2 as ("Cat","Cow"), 
Row 3 as ("Cat"," ") 

Antwort

3

Wir können apply Schleife über die Zeilen (MARGIN = 1) verwenden, entfernen die Duplikate (!duplicated(x)) und die NA (!is.na(x)) kann der Ausgang sein, eine list, wenn die Anzahl der Elemente in jeder der Zeilen von length nach dem Entfernen unterschiedlich sind. Um es zurück zu matrix zu konvertieren, können wir leere Werte am Ende mit stri_list2matrix (von stringi) auffüllen.

lst <- apply(df1, 1, FUN = function(x) x[!is.na(x) & !duplicated(x)]) 
library(stringi) 
stri_list2matrix(lst, fill='', byrow=TRUE) 
#  [,1] [,2] 
#[1,] "Cat" "Cow" 
#[2,] "Cat" "Cow" 
#[3,] "Cat" "" 
+1

Vielen Dank. Für mich geht das . –

Verwandte Themen