2016-10-27 1 views
1

Ich versuche PCA einige Spalten in größeren Datensatz, der NAs enthält. Wenn ich die NAs entferne, erzeugt dies einen Unterschied in der Anzahl der Elemente, so dass ich den Datensatz für die Label-Information nicht verwenden kann. Wie behebe ich das?PCA mit NAs produziert Mismatch zwischen Teilmenge und Datensatz

> ef <- sepData[c(4, 5, 6, 7, 8, 9, 10)] 
> autoplot(prcomp(na.omit(ef)), data = sepData, colour = 'species', label = TRUE, label.size = 3) 
Error in data.frame(..., check.names = FALSE) : 
arguments imply differing number of rows: 27, 24 

sepData enthält die Beispielnamen in jeder Zeile. Wenn ich die NAS entferne, verliere ich die Reihenfolge für einige Spalten.

+1

interpolieren Sie vielleicht Ihre fehlenden Werte? – Nate

+0

Ähnliche Beiträge: [hier] (http://stackoverflow.com/questions/12078291/) und [hier] (http://stats.stackexchange.com/questions/35561) – zx8754

Antwort

0

Eine sehr schnelle und einfache Möglichkeit, dies zu umgehen, ist das Ersetzen fehlender Werte durch Spalten (variable) -Mediane. Das zoo Paket hat eine nette Funktion na.aggregate() dafür. Nehmen wir an, Ihre Matrix heißt mat.

library(zoo) 
na.aggregate(mat, FUN = median) 

Natürlich sollten Sie wirklich herausfinden, warum Ihre Werte, um fehlen ihnen am geeignetsten zurechnen, vor allem wenn es viele von ihnen gibt.

+0

Dies würde eine PCA nicht vortäuschen? Heh, sie fehlen, weil das Gewebe während der Präparation zerstört wurde. : D – user974887

Verwandte Themen