2015-05-21 2 views
7

Ich habe ein Datenframe in R und ich frage mich, ob es möglich ist, Werte einer Spalte abzurufen, die nicht in den anderen Spalten und dies für jede Spalte vorhanden sind.R: Extrahiere eindeutige Werte in Spalten eines Datenrahmens

My dataframe looks like : 

sample_1 sample_2 sample_3 
    a  a  a  
    c  e  c 
    d  f  e 
    g  m  j 
    m  n  n 
    x  u  w 
    t  z  z 

Ich mag würde folgendes Ergebnis erhalten:

sample_1 sample_2 sample_3 
    d  f  j 
    g  u  w 
    x 
    t 

Danke im Voraus für Ihre Antworten,

+0

Beachten Sie, dass data.frames in R hat auch die gleiche Anzahl von Zeilen über alle Spalten hinweg, weshalb akrun die zweite und dritte Spalte mit leeren Strings ("") gefüllt hat. Da Sie drei Vektoren unterschiedlicher Länge erfassen möchten, würde ich vorschlagen, mit einer "Listen" -Struktur (der Ausgabe von lapply) beizubehalten, die flexibler ist, d. H. Ihre Elemente können unterschiedliche Typen und Dimensionen haben. –

Antwort

5

können Sie versuchen,

lst <- lapply(seq_along(df1), function(i) df1[,i][!df1[,i] %in% 
         unique(unlist(df1[-i]))]) 
library(stringi) 
as.data.frame(stri_list2matrix(lst, fill='')) 
+5

Oder ähnlich: 'lapply (1: ncol (df), Funktion (i) setdiff (df [, i], unlist (df [-i]))' –

+1

Vielen Dank für die Antworten, das funktioniert perfekt –