/ / Ignorando le NA in un dataframe quando si trovano righe univoche - r, unique, na

Ignorando le NA in un dataframe quando si trovano righe univoche - r, unique, na

Ho un dataframe con 20 colonne e circa 200righe e vorrei trovare le righe univoche. Il problema è che in quasi tutte le righe sono mescolate alcune NA: in realtà mancano i dati e vorrei che le NA fossero trattate come una "wildcard", non usata per abbinarle ad altre NA.

Le seguenti due righe devono essere riconosciute come una corrispondenza (cioè non univoca)

T, S, NA, Z
NA, S, G, Z

Ho provato l'argomento incomparabile per la funzione unica, ma non sembra essere implementato. Molte grazie.

risposte:

0 per risposta № 1

Metti questo in un ciclo doppio per:

all(na.omit(x[1,] == x[2,]))

Sostituire 1 e 2 con i e j per scorrere tutti i confronti che è necessario controllare.


0 per risposta № 2

Potresti provare

val <-  apply(df, 1, function(x) {paste(na.omit(x), collapse="")})
df[!duplicated(val),]
#    V1 V2   V3 V4
#1    T  S <NA>  Z
#2 <NA>  S    G  Z
#3    S  G    Z  T

dati

 df <- structure(list(V1 = c("T", NA, "S", "S", "S"), V2 = c("S", "S",
"G", NA, "G"), V3 = c(NA, "G", "Z", "Z", NA), V4 = c("Z", "Z",
"T", "G", "Z")), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA,
-5L), class = "data.frame")