2015-05-21 23 views
7

Ho un dataframe in R e mi chiedo se è possibile recuperare i valori di una colonna che non sono presenti nelle altre colonne e questa per ogni colonna.R: Estrai valori univoci in colonne di un dataframe

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 

Vorrei ottenere il seguente risultato:

sample_1 sample_2 sample_3 
    d  f  j 
    g  u  w 
    x 
    t 

Grazie in anticipo per le vostre risposte,

+0

Si noti che in data.frames R ha anche lo stesso numero di righe su tutte le colonne, motivo per cui akrun ha riempito la seconda e la terza colonna di stringhe vuote (""). Poiché si desidera acquisire tre vettori di lunghezza diversa, suggerirei di attenersi a una struttura 'list' (l'output di lapply) che è più flessibile, ovvero i suoi elementi possono avere tipi e dimensioni diversi. –

risposta

5

Si può provare

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

O allo stesso modo: 'lapply (1: ncol (df), funzione (i) setdiff (df [, i], unlist (df [-i])))' –

+1

Grazie per le risposte, funziona perfettamente –