Skalierung von Daten
Skalierung von Daten
Hallo,
ich habe eine Tabelle mit 7 verschiedenen Variablen, wobei jede einen anderen Wertebereich besitzt.
Die eine geht von 0 bis 10, die andere von 0 bis 42000 und eine von -10 bis 10.
Gibt es eine Möglichkeit die Daten so zu skalieren das alle im gleichen Wertebereich liegen?
Vielen Dank und viele Grüße
Felix
ich habe eine Tabelle mit 7 verschiedenen Variablen, wobei jede einen anderen Wertebereich besitzt.
Die eine geht von 0 bis 10, die andere von 0 bis 42000 und eine von -10 bis 10.
Gibt es eine Möglichkeit die Daten so zu skalieren das alle im gleichen Wertebereich liegen?
Vielen Dank und viele Grüße
Felix
Re: Skalierung von Daten
Hallo Felix,
willkommen im Forum!
Kannst Du uns schon mal den Output vonin Deiner nächsten Nachricht zeigen?
Bitte schaue Dir auch schon mal die Funktion scale() an:
Gruß, Jörg
willkommen im Forum!
Ja, es gibt eine. Meiner Meinung nach gibt es viele Möglichkeiten dafür. Die Frage ist, wie soll das Ergebnis konkret aussehen?Joe_Gerner hat geschrieben: ↑Mi Jun 13, 2018 2:31 pm ich habe eine Tabelle mit 7 verschiedenen Variablen, wobei jede einen anderen Wertebereich besitzt.
Die eine geht von 0 bis 10, die andere von 0 bis 42000 und eine von -10 bis 10.
Gibt es eine Möglichkeit die Daten so zu skalieren das alle im gleichen Wertebereich liegen?
Kannst Du uns schon mal den Output von
Code: Alles auswählen
str(DeinDataframe)
Bitte schaue Dir auch schon mal die Funktion scale() an:
Code: Alles auswählen
help("scale")
Re: Skalierung von Daten
Hallo Jörg,
vielen Dank für deine schnelle Antwort.
Also es geht mir darum das alle Variablen im gleichen Wertebereich liegen, zum Beispiel von 0 bis 100
Ich habe jetzt am Skript schon mal gearbeitet und bekomme die Skalierung glaube ich hin. Das Problem ist jetzt nur mir beim Ausführen einer weiteren Funktion angezeigt wird, dass im skalierten Datensatz unendliche oder NA Werte vorhanden sind. Beides habe ich bereits geprüft, konnte aber weder NA noch inf Werte finden. Weiß zufällig Jemand wo der Fehler in meinem Skript ist?
R-Script:
___________________________________________________________________________________________________________________________
library('archetypes')
library('spsurvey') #statistische Auswertung
library('graphics')
library('rcompanion')
library('MASS')
library('scales')
setwd("C:/Users/Desktop/Masterarbeit/R Berechnungen/")
t <-read.csv2("Warburg_auswahl.csv")
str(t)
scale_Gebaeude_Hoehe <-t$Gebaeude_Hoehe/100+1
scale_Bldg_Edges <-t$Bldg_Edges/100+1
scale_Bldg_Surface_wf <-t$Bldg_Surface_wF/100+1
scale_SHAPE_Idx_ISO <-t$Shape_Idx_ISO/100+1
scale_Num_Nb_100 <-t$Num_Nb_100/100+1
scale_MBR_Orientation <- t$MBR_Orientation/100+1
scale_Gebaeude_Hoehe<-round(scale_Gebaeude_Hoehe,2)
scale_Bldg_Surface_wf<- round(scale_Bldg_Surface_wf,2)
scale_Bldg_Edges<- round(scale_Bldg_Edges,2)
scale_Num_Nb_100 <- round(scale_Num_Nb_100,2)
scale_MBR_Orientation<- round(scale_MBR_Orientation,2)
scale_SHAPE_Idx_ISO <- round(scale_SHAPE_Idx_ISO,2)
scale_t <-cbind(scale_MBR_Orientation,scale_Num_Nb_100,scale_SHAPE_Idx_ISO,scale_Bldg_Surface_wf,
scale_Bldg_Edges,scale_Gebaeude_Hoehe)
write.csv2(scale_t,"Warburg_scale.csv")
___________________________________________________________________________________________________________________________
Ausgabe str:
str(t)
'data.frame': 23668 obs. of 6 variables:
$ Gebaeude_Hoehe : num 11.2 7.05 1.53 5.89 9.95 ...
$ Bldg_Edges : int 6 4 4 4 9 4 6 5 7 10 ...
$ Bldg_Surface_wF: num 246.3 81.8 51 149.5 612.6 ...
$ Shape_Idx_ISO : num 0.784 0.317 0.694 0.101 0.783 ...
$ Num_Nb_100 : int 1 30 46 26 46 27 36 35 27 34 ...
$ MBR_Orientation: num 115.3 130.9 49.6 140.5 49.9 ...
___________________________________________________________________________________________________________________________
Eine Stichprobe, sowie ein Screenshot der Fehlermeldung habe ich in den Anhang gepackt.
Ich bin für jeden Hinweis dankbar
Vielen Dank und viele Grüße
vielen Dank für deine schnelle Antwort.
Also es geht mir darum das alle Variablen im gleichen Wertebereich liegen, zum Beispiel von 0 bis 100
Ich habe jetzt am Skript schon mal gearbeitet und bekomme die Skalierung glaube ich hin. Das Problem ist jetzt nur mir beim Ausführen einer weiteren Funktion angezeigt wird, dass im skalierten Datensatz unendliche oder NA Werte vorhanden sind. Beides habe ich bereits geprüft, konnte aber weder NA noch inf Werte finden. Weiß zufällig Jemand wo der Fehler in meinem Skript ist?
R-Script:
___________________________________________________________________________________________________________________________
library('archetypes')
library('spsurvey') #statistische Auswertung
library('graphics')
library('rcompanion')
library('MASS')
library('scales')
setwd("C:/Users/Desktop/Masterarbeit/R Berechnungen/")
t <-read.csv2("Warburg_auswahl.csv")
str(t)
scale_Gebaeude_Hoehe <-t$Gebaeude_Hoehe/100+1
scale_Bldg_Edges <-t$Bldg_Edges/100+1
scale_Bldg_Surface_wf <-t$Bldg_Surface_wF/100+1
scale_SHAPE_Idx_ISO <-t$Shape_Idx_ISO/100+1
scale_Num_Nb_100 <-t$Num_Nb_100/100+1
scale_MBR_Orientation <- t$MBR_Orientation/100+1
scale_Gebaeude_Hoehe<-round(scale_Gebaeude_Hoehe,2)
scale_Bldg_Surface_wf<- round(scale_Bldg_Surface_wf,2)
scale_Bldg_Edges<- round(scale_Bldg_Edges,2)
scale_Num_Nb_100 <- round(scale_Num_Nb_100,2)
scale_MBR_Orientation<- round(scale_MBR_Orientation,2)
scale_SHAPE_Idx_ISO <- round(scale_SHAPE_Idx_ISO,2)
scale_t <-cbind(scale_MBR_Orientation,scale_Num_Nb_100,scale_SHAPE_Idx_ISO,scale_Bldg_Surface_wf,
scale_Bldg_Edges,scale_Gebaeude_Hoehe)
write.csv2(scale_t,"Warburg_scale.csv")
___________________________________________________________________________________________________________________________
Ausgabe str:
str(t)
'data.frame': 23668 obs. of 6 variables:
$ Gebaeude_Hoehe : num 11.2 7.05 1.53 5.89 9.95 ...
$ Bldg_Edges : int 6 4 4 4 9 4 6 5 7 10 ...
$ Bldg_Surface_wF: num 246.3 81.8 51 149.5 612.6 ...
$ Shape_Idx_ISO : num 0.784 0.317 0.694 0.101 0.783 ...
$ Num_Nb_100 : int 1 30 46 26 46 27 36 35 27 34 ...
$ MBR_Orientation: num 115.3 130.9 49.6 140.5 49.9 ...
___________________________________________________________________________________________________________________________
Eine Stichprobe, sowie ein Screenshot der Fehlermeldung habe ich in den Anhang gepackt.
Ich bin für jeden Hinweis dankbar
Vielen Dank und viele Grüße
- Dateianhänge
-
- Warburg_auswahl.csv
- Ausgangsdaten,jedoch nur eine kleine Stichprobe davon
- (3.81 KiB) 104-mal heruntergeladen
Re: Skalierung von Daten
Hallo Jörg,
ein kurzer Nachtrag, ich habe das Ganze jetzt mal mit der von dir angesprochenen scale Funktion probiert.
Damit umgehe ich das Problem der fehlenden oder unendlichen Werte.
Nur wie bekomme ich es hin das keine negativen Werte beim skalieren herauskommen?
Also mein Wertebereich muss positiv bleiben.
Vielen Dank und viele Grüße
Felix
ein kurzer Nachtrag, ich habe das Ganze jetzt mal mit der von dir angesprochenen scale Funktion probiert.
Damit umgehe ich das Problem der fehlenden oder unendlichen Werte.
Nur wie bekomme ich es hin das keine negativen Werte beim skalieren herauskommen?
Also mein Wertebereich muss positiv bleiben.
Vielen Dank und viele Grüße
Felix
Re: Skalierung von Daten
Hi!
Hier ein visuelles Anwendungsbeispiel für die Funktion:
LG,
Bernhard
Vielleicht hilft Dir ja folgende Skalierungsfunktion besser als scale:Joe_Gerner hat geschrieben: ↑Do Jun 14, 2018 11:35 amNur wie bekomme ich es hin das keine negativen Werte beim skalieren herauskommen?
Code: Alles auswählen
myscale <- function(values, to.min=0, to.max=100){
mi <- min(values)
ma <- max(values)
(values-mi)*to.max/(ma-mi)+to.min
}
Code: Alles auswählen
start <- runif(10, -5, 30)
ziel <- myscale(start)
plot(rep(1, 10), start, xlim=c(1,2), ylim=c(-10,100))
points(rep(2, 10), ziel)
abline(h=c(0,100), lty=2, col="orange")
for(i in 1:10) arrows(1,start[i], 2, ziel[i])
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: Skalierung von Daten
Hallo Felix,
hier eine Variante von mir:
Gruß, Jörg
hier eine Variante von mir:
Code: Alles auswählen
Warburg <- read.csv2("Warburg_auswahl.csv")
# scale(Warburg$Gebaeude_Hoehe)
my.scale <- function(x) {
mi <- min(x); ma <- max(x)
(x-mi)/(ma-mi)
}
summary(my.scale(Warburg$Gebaeude_Hoehe))
Warburg[] <- lapply(Warburg, my.scale)
summary(Warburg)
Re: Skalierung von Daten
Hallo Bernhard und Jörg,
danke euch für eure schnelle und gute Hilfe
viele Grüße
Felix
danke euch für eure schnelle und gute Hilfe
viele Grüße
Felix