Seite 1 von 1

Daten neu strukturieren

Verfasst: Do Jul 25, 2019 4:30 pm
von patite
Hallo
Im Anhang habe ich einen schlechten spezifizierten Datensatz.
die drei letzen Spalten sind nicht notwendig, da eine Spalte mit dem Namen "Art" kreiert werden könnte wobei
0 = Standard (Modell)
1 = Caprio(M
Autopreise_P2.xlsx
(14.85 KiB) 187-mal heruntergeladen
odell)
2 = Luxussegment
Wie kann ich diese Daten in R manipulieren, sodass die letzten drei Spalten verschwinden und die neue Spalte "Art" mit den Werten 0, 1 oder 2 neu geschafffen wird.
Vielen Dank für die Hilfe!
Patite

Re: Daten neu strukturieren

Verfasst: Fr Jul 26, 2019 9:59 am
von jogo
Hallo Patite,

Code: Alles auswählen

library("readxl")
Dat <- read_xlsx("Autopreise_P2.xlsx")

Modell <- tail(names(Dat), 3)

Dat$Modell <- 
  apply(matrix(as.logical(as.matrix(Dat[6:8])), ncol=3), 1, function(x) Modell[x])
Eventuell anschließend noch:

Code: Alles auswählen

Dat$Modell <- factor(Dat$Modell, levels=Modell)
str(Dat) # Kontrolle
Gruß, Jörg

Re: Daten neu strukturieren

Verfasst: So Jul 28, 2019 5:41 pm
von patite
Vielen Dank Jörg für den Code.
Ich bin nicht sicher, ob meine Erklärung klar war.
Das korrekte Endergebnis sollte so aussehen, wie im Anhang.
Mit deinem Code komme ich nicht auf dieses Ergebnis.
Vielen Dank nochmals!
Patite

Re: Daten neu strukturieren

Verfasst: So Jul 28, 2019 5:52 pm
von jogo
Hallo Patite,

aber wir sind uns schon einig, dass es sich bei Modell um eine nominal skalierte Variable handelt, oder bist Du anderer Meinung?
Dann erkläre mir mal bitte, welchen Unterschied es für die Auswertung macht, ob Modell mit 0, 1, 2 kodiert ist oder mit 1, 2, 3 oder mit 9, 42, 77 oder was auch immer!

Gruß, Jörg

Re: Daten neu strukturieren

Verfasst: Do Aug 01, 2019 10:10 am
von patite
Hallo Jörg
Du hast Recht, dass Modell eine nominal skalierte Variable ist.
Wenn ich den Code ausführe, bekomme ich das Output im Anhang.
Ich möchte als Endergebnis eine Darstellung wie in der Excel-Datei Autopreise_korrekt.xlsx haben.
Vielen Dank!
Patite

Re: Daten neu strukturieren

Verfasst: Do Aug 01, 2019 10:59 am
von Athomas
Ich glaube, in diesem Fall kann man auf eine "melt"-Funktion zurückgreifen, ohne sich am Anfänger zu versündigen :) :

Code: Alles auswählen

library(openxlsx)
library(reshape2)

DF      <- read.xlsx("*mein Pfad*")
DF.lang <- melt(DF, id=2:5, measure=6:8, variable.name="Art")
subset(DF.lang, value==1, -value)
Wenn Du tatsächlich die verschiedenen KFZ-Typen mit 0,1,2 gekennzeichnet haben möchtest, musst Du noch was unternehmen!

P.S.: Caprio ist der Schauspieler, das Auto ohne (festes) Dach heißt Cabrio!

Re: Daten neu strukturieren

Verfasst: Do Aug 01, 2019 11:01 am
von jogo
patite hat geschrieben: Do Aug 01, 2019 10:10 am Du hast Recht, dass Modell eine nominal skalierte Variable ist.
Wenn ich den Code ausführe, bekomme ich das Output im Anhang.
Ich möchte als Endergebnis eine Darstellung wie in der Excel-Datei Autopreise_korrekt.xlsx haben.
Vielen Dank!
Patite
da ist doch aber auch nichts anderes als

Code: Alles auswählen

Dat$Art <- as.integer(Dat$Modell) - 1
Dat
Gruß, Jörg