2016-10-31 2 views
-1

Amelia wird verwendet, um fehlende Werte in einem data.frame-Eingang zu imputieren. Dieser Prozess scheint zu funktionieren. Der Eingabedatensatz weist Spaltenüberschriften header_1, header_2 usw. Der amelia Befehl lautet:r-Klasse Amelia-Objekt zurück zu data.frame

imp1<-amelia(input, m=1, idvars = idvars) 

Das Ergebnis aus

str(imp1$imputations, 1)str(imp1$imputations, 1) 

wird:

$ imp1:'data.frame': 1725 obs. of 29 variables: 
- attr(*, "class")= chr [1:2] "mi" "list" 

Der Befehl

xxx<-as.data.frame(imp1[[1]]) 

funktioniert zum Erstellen von Daten Rahmen, aber die Variablennamen, Spaltenüberschriften wurden

umbenannt
imp1.header_1 
imp1.header_2 
etc 

Was ist der richtige Weg amelia ausführen, um die ursprüngliche Variable zu behalten, Header-Namen? Wie kann ein data.frame mit den ursprünglichen Spaltenüberschriften abgerufen werden?

Antwort

1

imp1$imputations enthält eine Liste von Datenrahmen. Da Sie m = 1 angegeben haben, gibt es dort nur einen Datenrahmen. So können Sie mit imp1$imputations$imp1 darauf zugreifen und sich nicht um den as.data.frame Anruf kümmern.

Zum Beispiel

data(africa) 
a.out <- amelia(x = africa, 
       m = 1, 
       cs = "country", 
       ts = "year", 
       logs = "gdp_pc") 

head(a.out$imputations$imp1) 

    year  country gdp_pc infl trade civlib population 
1 1972 Burkina Faso 377 -2.92 29.69 0.5000000 5848380 
2 1973 Burkina Faso 376 7.60 31.31 0.5000000 5958700 
3 1974 Burkina Faso 393 8.72 35.22 0.3333333 6075700 
4 1975 Burkina Faso 416 18.76 40.11 0.3333333 6202000 
5 1976 Burkina Faso 435 -8.40 37.76 0.5000000 6341030 
6 1977 Burkina Faso 448 29.99 41.11 0.6666667 6486870 
+0

Können Sie eine Beschreibung der Punkt (a.out $ imputations $ imp1) Syntax. Der Befehl yyy <- (a.out $ imputations $ imp1) erzeugt ein korrektes Ergebnis. –

+0

Sie bekommen also, was Sie wollen? Wenn Sie sich 'str (a.out)' anschauen, können Sie sehen, dass es sich um eine Liste mit benannten Elementen handelt. Der '$ imputations' Teil bringt Sie in eine Liste innerhalb der Liste (mit den impudierten Datensätzen), und dann erhält der' $ imp1' Teil das spezifische Element aus der Liste (ein Datenrahmen). Wenn Sie es erneut mit 'm = 4 'ausführen, sehen Sie, dass' $ imputations 'eine Liste von vier Datensätzen ist, einer für jede Imputation. Sie können jeden mit 'a.out $ imputations $ imp1',' a.out $ Imputationen $ imp2', 'a.out $ Imputationen $ imp3', etc. aufrufen. –

Verwandte Themen