Seite 1 von 1

Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Mo Mär 13, 2017 9:22 pm
von Lea
Hallo,
ich habe ein Dataset mit 2 response variablen (Gewicht und Kopfkapselbreite). Ich habe beim Einlesen der Daten, dass R meine Kopfkapsel (head) als factor interpretiert und meine Werte in ganzzahlige Nummern umwandelt, das Gewicht hingegen, wird normal als numerisch erkannt. Angaben der Dezemialstellen mit ',' in .txt, was ich mit dec="," jedoch beim Einlesen berücksichtigt hatte.

$ kopf : Factor w/ 46 levels "0,088","0,094",..: 19 14 17

Wie transformiere ich meine Daten nun korrekt?

# Folgendes hatte ich bereits durchgeführt und habe auch in englischen Foren gelesen, dass in R eine korrekte Transformation von factor zu numerischen Daten nicht ohne mögliche Probleme möglich ist.

Code: Alles auswählen

class(kopf)
is.numeric(kopf)
v$kopf = as.numeric(v$kopf)
as.numeric.factor <- function(kopf) {as.numeric(levels(v$kopf))[v$kopf]} 
head(v$head)
#Ob nun mit den transformierten oder beim neuen Einladen OHNE den Befehl 'as.numeric.factor', kommt folgendes output:

Code: Alles auswählen

[b]output:[/b] 
[b]> class(kopf)[/b]
[1] "numeric"
[b]> str(kopf)[/b]
 num [1:144] 19 14 17 17 30 8 8 22 25 25 ...
#Für ein lineares Modell erhalte ich meines Erachtens in Folge der fehlerhaften Transformation folgende Warnung und das Modell wird nicht durchgeführt:

Code: Alles auswählen

Warning messages:
1: In model.response(mf, "numeric") :
  Benutzung von type="numeric" wird für eine faktorielle Zielgröße ignoriert
2: In Ops.factor(y, z$residuals) : ‘-’ not meaningful for factors
Kann mir jemand helfen? Vielen Dank vorab.
Lea

Re: Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Di Mär 14, 2017 9:19 am
von jogo
Hallo Lea,

willkommen im Forum.
Hier die entsprechende Antwort aus dem FAQ
https://cran.r-project.org/doc/FAQ/R-FAQ.html Punkt 7.10
https://cran.r-project.org/doc/FAQ/R-FA ... meric_003f
Also immer schön:

Code: Alles auswählen

as.numeric(as.character(...))
Allerdings wird R schon seinen Grund haben, weshalb Deine erste Datenspalte nicht als numeric erkannt wird ...
Man kann sich aber die Verwirrung um die automatische Umwandlung zu Faktoren beim Einlesen ersparen, in dem man beim Einlesen den Parameter stringsAsFactors=FALSE setzt, alternativ wirkt as.is=TRUE ganz genauso.
Du wirst die Spalte Dir ansehen müssen (in der einzulesenden Textdatei oder im Dataframe nach dem Einlesen), um festzustellen, welcher Text sich nicht nach numeric konvertieren lässt.
Mehr kann ich jetzt ohne Ansicht der Daten nicht dazu schreiben.

Gruß, Jörg

Re: Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Mi Mär 15, 2017 1:28 pm
von Lea
Hallo Jörg,

vielen Dank für deine Tipps. Mit 'as.numeric(as.character(...))' hat es nun funktioniert, leider nur sind es nun ganze Zahlen, wie auch immer dies automatisch berechnet wurden in R, d.h. von Angaben zum Gewicht mit drei Nachkommastellen, beginnend mit jeweils '0,':

>kopf
[1] 0,116 0,111 0,114 0,114 0,128

zu:

>kopf
[1] 19 14 17 17 30

Ich habe folgendes bereits probiert, leider ohne Erfolg, es sind immernoch ganze Zahlen:
kopf<-as.numeric(levels(kopf))[kopf]

Gibt es hierfür eine Lösung?
Danke. Lea

Re: Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Mi Mär 15, 2017 1:36 pm
von jogo
Hallo Lea,

wie ich schon geschrieben habe, kann ich ohne Daten nicht weiter helfen. Bitte lies im Bereich FAQ viewforum.php?f=20 das Thema viewtopic.php?f=20&t=11

Gruß, Jörg

Re: Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Do Mär 16, 2017 7:19 pm
von Lea
Hallo Jörg,

ich hatte nun doch noch Hilfe von einem Kollegen bekommen. Es lag scheinbar an der .txt, die ich eingelesen hatte. Viele Grüße. Lea

Re: Transformation von Daten (factor zu numeric) - weiterführende Probleme

Verfasst: Fr Mär 17, 2017 8:28 am
von jogo
Hallo Lea,

danke für die Rückmeldung - schön, dass es jetzt funktioniert.
Es ist genau das, was ich die ganze Zeit geschrieben habe:
man muss sich die einzulesende Datei und die Funktion zum Einlesen der Datei anschauen.

Gruß, Jörg