Daten werden als Faktoren erkannt, Umwandlung in Integer funktioniert nicht

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
leonard_24

Daten werden als Faktoren erkannt, Umwandlung in Integer funktioniert nicht

Beitrag von leonard_24 »

Hallo zusammen,

Vorab die Frage: Wie kann ich Daten in ein Format (z.B. Integer) übertragen, damit ich damit arbeiten kann?
Habe ein kleines Problem: Ich möchte aus einer Exceldatei Daten in R einlesen und diese anschließend analysieren, aggregieren etc. Dabei handelt es sich um eine Exceldatei mit den 99 größten Firmen weltweit mit den Spalten: Ranking, Firma, Sitz, Umsatz, Gewinn, Mitarbeiter, Branche, CEO, Land (insgesammt also 9 Spalten)
Folgender Code bisher:

x <- read.csv ("C:\\Users\\...\\Mappe1.csv",sep=";")
x

## Daten einlesen/ausgeben funktioniert
## Nun möchte ich mir alle Zeilen ausgeben, deren Umsatz größer 150 ist (150 Mrd)

subset(x, x$Umsatz > 150)

# Da kommt allerdings nur die Warnung:

<0 Zeilen> (oder row.names mit Länge 0)
Warning message:
In Ops.factor(x$Umsatz, 150) : ‘>’ not meaningful for factors

Das Dateiformat scheint also "Factor" zu sein. Ich habe im Internet schon mal geschaut, wie man das in einen einfachen Integer transformieren kann
Ist das richtig?


x$Gewinn <- as.numeric(as.character(x$Gewinn))
x$Mitarbeiter <- as.numeric(as.character(x$Mitarbeiter))

x$Firma <- as.character(as.character(x$Firma))
x$Branche <- as.character(as.character(x$Branche))
x$Sitz <- as.character(as.character(x$Sitz))
x$CEO <- as.character(as.character(x$CEO))
x$LAND <- as.character(as.character(x$Land))

## Wenn ich das mache kommt bei jeder Zeile, in der ich Factor in Integer umwandeln will die Warnung:

Warning message:
NAs introduced by coercion

Bei den anderen funktioniert es

Mit str(x) kommt:

'data.frame': 99 obs. of 9 variables:
$ Ranking : num 1 2 3 4 5 6 7 8 9 10 ...
$ Firma : chr "Walmart" "ExxonMobil" "McKesson" "BP" ...
$ Sitz : chr "Bentonville" "Irving" "San Francisco" "London" ...
$ Umsatz : num NA NA NA NA NA NA NA NA NA NA ...
$ Gewinn : num NA NA NA NA NA NA NA NA NA NA ...
$ Mitarbeiter: num NA 72.7 64.5 74.5 230 ...
$ Branche : chr "Einzelhandel" "Öl und Gas" "Pharmahandel" "Öl und Gas" ...
$ CEO : Factor w/ 99 levels "Akio Toyoda",..: 18 14 44 74 79 50 49 31 17 59 ...
$ Land : Factor w/ 16 levels " Brasilien"," Deutschland",..: 15 15 15 4 15 15 13 11 2 15 ...

Viele Grüße und besten Dank
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Daten werden als Faktoren erkannt, Umwandlung in Integer funktioniert nicht

Beitrag von Athomas »

Die Funktion read.table - und auch ihr Abkömmling read.csv - hat den Parameter "stringsAsFactors". Der stand früher standardmäßig auf "TRUE", inzwischen wird "default.stringsAsFactors()" zugewiesen, was bei mir auf "TRUE" steht - bei Dir wahrscheinlich auch.

Dieser Parameter bewirkt, dass jede Spalte, in der Textgrößen vorkommen, als Faktor eingelesen wird.

Jetzt sagst Du vielleicht "Aber ich habe doch gar keine Textgrößen in den fraglichen Daten!"?

Die kann man sich aber recht schnell einhandeln, etwa indem man nicht das erwartete Dezimaltrennzeichen verwendet (read.csv will den Punkt und sonst gar nix, Zahlen mit Kommas werden als Text erkannt - und deshalb bei (un-)passener Setzung von "stringsAsFactors" direkt als Faktoren gespeichert) oder wenn man in den Daten eine Einheit (etwa EUR) hat...

Grundsätzlich empfehle ich, am Anfang (wenn man nicht auf das vieeel schnellere fread() von data.table zurückgreifen will) immer read.table zu verwenden - zumindest, bis man sich 100%ig bewußt ist, was man tut - ich weiß bis heute noch nicht, welche "Konventionen" man mit read.csv eingeht und muss das immer nachlesen :cry: ...

Nachtrag: es gibt natürlich inzwischen eine Vielzahl von Funktionen, mit denen man direkt - also ohne den Umweg über eine .csv-Datei - Excel-Daten lesen kann. Ich bevorzuge read.xlsx aus dem Package "openxlsx" - damit habe ich bisher (im Gegensatz zu anderen Einlesevarianten) keine Schwierigkeiten gehabt!
Zuletzt geändert von Athomas am So Aug 05, 2018 1:09 pm, insgesamt 1-mal geändert.
leonard_24

Re: Daten werden als Faktoren erkannt, Umwandlung in Integer funktioniert nicht

Beitrag von leonard_24 »

danke schön;

wobei, ich habe gemerkt, wenn man die Zellen in Excel sauber definiert(Zahl, Text usw.) dann funktioniert das schon wesentlich besser

viele grüße
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Daten werden als Faktoren erkannt, Umwandlung in Integer funktioniert nicht

Beitrag von Athomas »

Ist Dein Problem damit erledigt?
Antworten