Hallo,
im Rahmen einer Seminararbeit nutze R und bin noch sehr unerfahren mit diesem Programm.
Meinen Datensatz lese ich mittels einer ExcelTabelle ein.
Ich habe einen Datensatz mit 9 Variablen, die aber alle als numerisch num erkannt werden:
'data.frame': 156 obs. of 9 variables:
$ year : num 2017 2017 2017 2017 2017 ...
$ kw : num 1 2 3 4 5 6 7 8 9 10 ...
$ mailinc : num 9312 13028 13247 12861 12395 ...
$ mailproc : num 8825 11504 12623 12875 11787 ...
$ callinc : num 1051 1514 1575 1551 1544 ...
$ calllost : num 60 182 377 210 232 265 248 379 229 318 ...
$ lostcallq: num 0.0571 0.1202 0.2394 0.1354 0.1503 ...
$ holidays : num 0.847 0 0 0 0.12 ...
$ classhol : num 1 4 4 4 4 4 4 4 4 4 ...
Bis auf die Variablen lostcallq und holidays sind dies jedoch alles Ganze Zahlen, also integer int.
Was mache ich möglichweise falsch?
Ganze Zahlen werden als numerisch und nicht als integer erkannt
Re: Ganze Zahlen werden als numerisch und nicht als integer erkannt
Bereit dir das irgendwelche Probleme in deiner Analyse(z.b. beim Speicherverbrauch)?
Wenn ja, kannst du mit as.integer umwandeln .
Wenn ja, kannst du mit as.integer umwandeln .
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Ganze Zahlen werden als numerisch und nicht als integer erkannt
In der Tat sieht R erstmal alles als Fließkommazahl an:
Während man andernsorts vielleicht 5.0 schreiben müsste, um etwas als Fließkommazahl zu markieren, muss man in R ein 'L' anhängen, um etwas als integer zu kennzeichnen:
Tatsächlich macht es in R kaum je ein Problem, wenn auch als Integer gemeinte Zahlen als floating point hinterlegt werden. Während EDi oben vorschlägt, abzuwarten und nur im unwahrscheinlichen Fall eines Problems umzuwandeln würde ich zu großzügigem Umwandeln am Anfang raten. Mir hilft es gedanklich, wenn ganzzahlige Dinge ganzzahlig und realskalierte Werte real sind und Faktoren Faktoren sind.
Fließkommazahlen haben beispielsweise diese bekannte Problem, dass man sich auf den Gleichheitsoperator '==' nicht verlassen kann.
ich versuche daher wachsam zu sein, dass ich Fließkommazahlen möglichst nie mit '==' vergleiche was aber nur Sinn macht, wenn Ganzzahlen auch als integer hinterlegt sind. Bei kann man '==' mit gutem Gewissen verwenden.
Man verbringt nach dem Einlesen ja ohnehin etwas Zeit damit, den Datentyp zu kontrollieren. Dann kann man auch schnell ein paar Korrekturen vornehmen.
LG,
Bernhard
Code: Alles auswählen
> typeof(5)
[1] "double"
Code: Alles auswählen
> typeof(5L)
[1] "integer"
Fließkommazahlen haben beispielsweise diese bekannte Problem, dass man sich auf den Gleichheitsoperator '==' nicht verlassen kann.
Code: Alles auswählen
> sqrt(2)^2
[1] 2
> sqrt(2)^2 == 2
[1] FALSE
Man verbringt nach dem Einlesen ja ohnehin etwas Zeit damit, den Datentyp zu kontrollieren. Dann kann man auch schnell ein paar Korrekturen vornehmen.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Ganze Zahlen werden als numerisch und nicht als integer erkannt
Wie würde denn beispielsweise der Befehl lauten, wenn ich die genannten Variablen als int darstellen möchte?bigben hat geschrieben: ↑So Aug 16, 2020 4:04 pm
Tatsächlich macht es in R kaum je ein Problem, wenn auch als Integer gemeinte Zahlen als floating point hinterlegt werden. Während EDi oben vorschlägt, abzuwarten und nur im unwahrscheinlichen Fall eines Problems umzuwandeln würde ich zu großzügigem Umwandeln am Anfang raten. Mir hilft es gedanklich, wenn ganzzahlige Dinge ganzzahlig und realskalierte Werte real sind und Faktoren Faktoren sind.
Im Internet dazu finde ich nur
Code: Alles auswählen
as.integer(x)
Re: Ganze Zahlen werden als numerisch und nicht als integer erkannt
Hier ein mögliches Vorgehen mit eigenem Beispieldatensatz:
Code: Alles auswählen
bsp <- data.frame(id = c(1,2,3,4,5,6,7,8,9,0),
a = c(100, 103, 205, 99, 44, 34, 28, 45, 100, 101),
c = rnorm(10))
str(bsp)
bsp$id <- as.integer(bsp$id)
bsp$a <- as.integer(bsp$a)
str(bsp)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte