2017-11-10 6 views
0

Ich habe ein Datenframe mit 1209 Spalten und 27900 Zeilen.Entfernen von Duplikaten aus jeder Zeile in R-Datenframe

Für jede Zeile sind doppelte Werte um die Spalten verteilt. Ich habe versucht, den Datenrahmen zu transponieren und nach Spalten zu entfernen. Aber es stürzt ab.

Nachdem ich transponieren ich verwendet:

for(i in 1:ncol(df)){ 

     #replicate column i without duplicates, fill blanks with NAs 
     df <- cbind.fill(df,unique(df[,1]), fill = NA) 
     #rename the new column 
     colnames(df)[n+1] <- colnames(df)[1] 
     #delete the old column 
     df[,1] <- NULL 
} 

Aber kein Ergebnis so weit.

Ich würde gerne wissen, ob jemand eine Idee hat.

Beste

Antwort

0

Wie ich verstehe Sie in jeder Spalte mit NA duplizierten Werte ersetzen möchten?

Dies kann auf verschiedene Arten erfolgen.

Zunächst einige Daten:

set.seed(7) 
df <- data.frame(x = sample(1: 20, 50, replace = T), 
       y = sample(1: 20, 50, replace = T), 
       z = sample(1: 20, 50, replace = T)) 
head(df, 10) 
#output 
    x y z 
1 20 12 8 
2 8 15 10 
3 3 16 10 
4 2 13 8 
5 5 15 13 
6 16 8 7 
7 7 4 20 
8 20 4 1 
9 4 8 16 
10 10 6 5 

mit purrr Bibliothek:

library(purrr) 
map_dfc(df, function(x) ifelse(duplicated(x), NA, x)) 
#output 
# A tibble: 50 x 3 
     x  y  z 
    <int> <int> <int> 
1 20 12  8 
2  8 15 10 
3  3 16 NA 
4  2 13 NA 
5  5 NA 13 
6 16  8  7 
7  7  4 20 
8 NA NA  1 
9  4 NA 16 
10 10  6  5 
# ... with 40 more rows 

mit gelten in Basis R

as.data.frame(apply(df, 2, function(x) ifelse(duplicated(x), NA, x))) 
Verwandte Themen