Data Quality - Zeitreihen

Entscheidungsbäume, Random Forest, Support Vektor Maschinen, Neuronale Netze, ...

Moderator: consuli

Antworten
Selina1
Beiträge: 4
Registriert: Do Jul 01, 2021 5:35 pm

Data Quality - Zeitreihen

Beitrag von Selina1 »

Hallo liebe R - Freunde

Ich hoffe, dass mein Post am richitgen Ort ist :|

Folgendes Problem stellt sich für mich:

Ich habe eine Funktion und diese Funktion will ich durch alle Spalten (Variablen) loopen. Es handelt sich dabei um eine ganz einfache ifelse function.
Es soll getestes werden, ob der Wert in der vorherigen "Zelle" der gleiche ist wie der zuvor. Als Beispiel wir haben die Spalten A, B, C usw. jede Spalte hat unterschiedliche Anzahl an Werten (Zeitwerte), in der Spalte C sind sogar die ersten 13 Zellen leer. Wie bereits erwähnt, möchte ich die ifelse function durch alle Spalten loopen und wenn der vorherige Wert mit dem jetzigen übereinstimmt soll in einer neuen Spalte eine 1 eingetragen werden, wenn der Wert nicht der gleiche ist eine 0. Es soll für jede Spalte sprich für A, B, C usw. eine neue keriert werden (z.Bsp mit dem Namen: sameA, sameB etc.). Am Schluss in einem neuen df noch für jede der neuen Spalte sameA, sameB etc. die Sequence ausgegeben werden.

Als Beispiel habe ich in einem PDF die Aufgabenstellung nochmals bildlich dargestellt. ;)

Viielen lieben Dank schonmal im Voraus, wenn mir jemand helfen könnte, das wäre echt super lieb :roll:

Lieber Gruss
Selina

Anbei noch der Code

Code: Alles auswählen


X$same <- ifelse( X$Last == X$Last[c(NA,0:(nrow(ZCZ18)-1))], 1, 0) # X ist das Excelfile.

Show <- X %>% 
  select(Time, same)
Show

y <- rle(X$same)
fre <- y$lengths[y$values==1] # Mit dieser Line werden die Sequencen gebildet.
Dateianhänge
R_Beispiel.pdf
(96.9 KiB) 60-mal heruntergeladen
schubbiaschwilli
Beiträge: 209
Registriert: Di Jun 27, 2017 12:09 pm

Re: Data Quality - Zeitreihen

Beitrag von schubbiaschwilli »

Gude!

Sowas?

Code: Alles auswählen

data <- data.frame(Spalte1=-1:1,Spalte2=seq(-2,2,by=2),Spalte3=-2:0,Spalte4=0:-2)

n <- length(data)

for(i in 1:(n-1)){
  for(j in (i+1):n){
    new <- paste("Spalte", i, "_vs_Spalte", j, sep="")
    first <- paste("Spalte", i, sep="")
    second <- paste("Spalte", j, sep="")
    data[new] <- ifelse(data[first]==data[second],0,1)
  }
}
Dank&Gruß
Schubbiaschwilli
Selina1
Beiträge: 4
Registriert: Do Jul 01, 2021 5:35 pm

Re: Data Quality - Zeitreihen

Beitrag von Selina1 »

Lieber / Liebe Schubbiawilli

Erstmals vielen lieben Dank für Deine Hilfe :) und die rasche Antwort!

Leider passt der Code nicht ganz. Ich muss die Funktion über mehrere hundert Spalten (variablen) loopen und dabei soll folgendes untersucht werden:
Spalte 1 und 2 ist das Datenset. In Wirklichkeit sind es mehrere hunder Spalten. In jeder Spalte hat es Werte, manchmal beginnen die Werte erst nach hundert rows / Zellen, bzp. wie in Spalte 2. Was ich jetzt wissen möchte ist, ob der jetzige Wert der gleiche ist wie der vorherige (von oben nach unten). Als Beispiel: in der Spalte 1: Ist der Wert 3 nicht gleich Wert 2. Also soll im selben df eine neue Spalte entstehen für Spalte1, nennen wir sie same1, da drin steht jetzt auf der Höhe des Wertes 3 eine 0, da der vorherige Wert keine 3 ist. Der Wert 4 ist nicht gleich Wert 3, also eine 0. Die nächste 4 ist aber gleich gross wie die vorherige also 1. usw. und das für jede einzelne Spalte. Folgen in einer Spalte (wie bei der Spalte2) zwei leere Zellen aufeinander, dann darf auch eine 0 stehen. *die Wert in der Spalte sind jeweils verschoben, wenn ich die Nachricht poste.

Spalte 1 ; Spalte 2 -> same1 ; same2
2 0
3 0
4 1 0 0
4 2 1 0
5 2 0 1

Falls ich etwas an deinem Code nicht verstanden habe, tut es mir leid :roll: , ich bin noch nicht wirklich so versiert in R. Aber ich würde mich sehr freuen, wenn Du mir nochmals helfen könntest.
Danke Dir vielmals.

Lieber Gruss
Selina1
schubbiaschwilli
Beiträge: 209
Registriert: Di Jun 27, 2017 12:09 pm

Re: Data Quality - Zeitreihen

Beitrag von schubbiaschwilli »

Gude!

Dann sowas?

Code: Alles auswählen

data <- data.frame(x=c(rep(NA,3),1,1,2,2,2,1,1))
data$delta_x <- c(NA, diff(data$x))
data$Ident_x <- ifelse(data$delta_x==0,TRUE,FALSE)
Dank&Gruß
Schubbiaschwilli
Selina1
Beiträge: 4
Registriert: Do Jul 01, 2021 5:35 pm

Re: Data Quality - Zeitreihen

Beitrag von Selina1 »

Hallo Schubbiaschwilli :-)

Ja ganz genau! Vielen lieben Dank für deine Hilfe und Zeit! Hammer! :D

Jetzt wären nur noch etwas open. Wie kann ich das über sagen wir 900 Spalten loopen (somit entstehen 900 weiter Ident_ Spalten mit TRUE und FALSE)?

Wenn Du keine Zeit mehr hast, versuche ich selbst diese Problem noch zu lösen, wäre aber natürlich sehr sehr dankbar, wenn Du mir nochmals behilflich sein könntest.

Ganz lieber Gruss
Selina1
schubbiaschwilli
Beiträge: 209
Registriert: Di Jun 27, 2017 12:09 pm

Re: Data Quality - Zeitreihen

Beitrag von schubbiaschwilli »

Gude!
Selina1 hat geschrieben: Fr Jul 02, 2021 4:45 pmJetzt wären nur noch etwas open. Wie kann ich das über sagen wir 900 Spalten loopen (somit entstehen 900 weiter Ident_ Spalten mit TRUE und FALSE)?
Das steht im 1. Beitrag von mir - Musst du dir neu zusammensetzen.

Dank&Gruß
Schubbiaschwilli
Antworten