Mit while durch Excelfile gehen und Änderungen vornehmen
Mit while durch Excelfile gehen und Änderungen vornehmen
Hallo nochmal
habe folgendes Problem: Ich habe eine eingelesene Exceldatei (2 Spalten, ID und Firma) und möchte nun mittels einer Schleife durch die ID-Spalte gehen und die Zeichen "_" sowie "ID" entfernen, sodass z.B. in der ersten Zeile aus "WBEB_4123_ID" "WBEB4123" wird. Die Daten sind in der Variable "x" gespeichert.
Mein Code bisher:
n <- 1
while (x[n,1] != "") {
gsub ("_", "",x[n,1])
sub ("ID","", x[n,1])
n=n+1
}
Leider kommt als Fehlermeldung:
Error in while (x[n, 1] != " ") { : missing value where TRUE/FALSE needed
Kann mir jemand den Fehler sagen?
Gruß
habe folgendes Problem: Ich habe eine eingelesene Exceldatei (2 Spalten, ID und Firma) und möchte nun mittels einer Schleife durch die ID-Spalte gehen und die Zeichen "_" sowie "ID" entfernen, sodass z.B. in der ersten Zeile aus "WBEB_4123_ID" "WBEB4123" wird. Die Daten sind in der Variable "x" gespeichert.
Mein Code bisher:
n <- 1
while (x[n,1] != "") {
gsub ("_", "",x[n,1])
sub ("ID","", x[n,1])
n=n+1
}
Leider kommt als Fehlermeldung:
Error in while (x[n, 1] != " ") { : missing value where TRUE/FALSE needed
Kann mir jemand den Fehler sagen?
Gruß
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
Hallo Leonard,
das geht ohne Schleife, weil R mit ganzen Vektoren arbeitet:
Test:
Gruß, Jörg
das geht ohne Schleife, weil R mit ganzen Vektoren arbeitet:
Code: Alles auswählen
x[, 1] <- gsub("_", "", sub("ID$", "", x[, 1]))
Code: Alles auswählen
y <- "WBEB_4123_ID"
gsub("_", "", sub("ID$", "", y))
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
Während Jörgs Vorgehen das ganz klar bessere ist, beantwortet das aber noch nicht die Frage, wo der Fehler her kommt.
Was gibt R denn aus, wenn Du eingibst. Bzw was bei ?
Wenn das den Fehler nicht erklärt, was passiert bei
LG,
Bernhard
Was gibt R denn aus, wenn Du
Code: Alles auswählen
x[1,1] != ""
Code: Alles auswählen
str(x[1,1])
Wenn das den Fehler nicht erklärt, was passiert bei
Code: Alles auswählen
str(x)
head(x)
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: Mit while durch Excelfile gehen und Änderungen vornehmen
jogo hat geschrieben: ↑So Aug 05, 2018 8:04 pm Hallo Leonard,
das geht ohne Schleife, weil R mit ganzen Vektoren arbeitet:Test:Code: Alles auswählen
x[, 1] <- gsub("_", "", sub("ID$", "", x[, 1]))
Gruß, JörgCode: Alles auswählen
y <- "WBEB_4123_ID" gsub("_", "", sub("ID$", "", y))
Danke! Wusste gar nicht, dass das ohne Schleife geht
Kannst du mir vllt. kurz den Syntax erklären? Warum kann man den "sub" in den "gsub" reinschachteln, ohne, dass bei der "gsub" Funktion die Spalte als letztes Element in der Funktion auftaucht?
Viele Grüße
Zuletzt geändert von leonard_24 am Mo Aug 06, 2018 7:54 pm, insgesamt 1-mal geändert.
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
Wenn ich str(x) mache, kommt:bigben hat geschrieben: ↑Mo Aug 06, 2018 2:23 pm Während Jörgs Vorgehen das ganz klar bessere ist, beantwortet das aber noch nicht die Frage, wo der Fehler her kommt.
Was gibt R denn aus, wenn Dueingibst. Bzw was beiCode: Alles auswählen
x[1,1] != ""
?Code: Alles auswählen
str(x[1,1])
Wenn das den Fehler nicht erklärt, was passiert beiLG,Code: Alles auswählen
str(x) head(x)
Bernhard
data.frame': 99 obs. of 10 variables:
$ ID : chr "WBEB_4123_ID" "EIÖI_2872_ID" "MSPS_1564_ID" "BLÖL_1074_ID" ...
$ Firma : chr "Walmart" ...
...
also so wie es sein sollte. Mit str(x[1,1]) kommt chr "WBEB_4123_ID"
Den Fehler habe ich also bisher noch nicht gefunden...
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
Es ist in R ganz selten, dass eine explizite Schleife wirklich notwendig ist.leonard_24 hat geschrieben: ↑Mo Aug 06, 2018 7:47 pmDanke! Wusste gar nicht, dass das ohne Schleife gehtjogo hat geschrieben: ↑So Aug 05, 2018 8:04 pm das geht ohne Schleife, weil R mit ganzen Vektoren arbeitet:Test:Code: Alles auswählen
x[, 1] <- gsub("_", "", sub("ID$", "", x[, 1]))
Code: Alles auswählen
y <- "WBEB_4123_ID" gsub("_", "", sub("ID$", "", y))
Die Dokumentation von sub() sagt im Abschnitt Value, dass als Ergebnis die veränderte Zeichenkette bzw. der char-Vektor zurückgliefert wird.Kannst du mir vllt. kurz den Syntax erklären? Warum kann man den "sub" in den "gsub" reinschachteln, ohne, dass bei der "gsub" Funktion die Spalte als letztes Element in der Funktion auftaucht?
Na ja, und dieser Vektor wird gleich weiter verarbeitet.
Das ist nicht sehr viel anders als statt
Code: Alles auswählen
a <- 3+4
b <- a + 11
Code: Alles auswählen
b <- (3+4) +11
Code: Alles auswählen
b <- '+'('+'(3, 4), 11)
Gruß, Jörg
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
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: Mit while durch Excelfile gehen und Änderungen vornehmen
NEin, sowas möchte ich nicht schreiben. Wenn schon Praefixnotation, dann auch konsequent:
Code: Alles auswählen
'<-'(b, '+'('+'(3, 4), 11))
---
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: Mit while durch Excelfile gehen und Änderungen vornehmen
sehr gut!
Da ist mir wieder ein Schmankerl entwischt.
Danke, Bernhard, Du hast mich auf meine erste Frage auf SO gebracht:
https://stackoverflow.com/questions/517 ... s-an-error
Gruß, Jörg
Da ist mir wieder ein Schmankerl entwischt.
Danke, Bernhard, Du hast mich auf meine erste Frage auf SO gebracht:
https://stackoverflow.com/questions/517 ... s-an-error
Gruß, Jörg
Re: Mit while durch Excelfile gehen und Änderungen vornehmen
danke an euch! Hat vielleicht trotzdem einer eine Idee, warum die While Schleife nicht funktioniert.
Ich brauche nämlich dringend den Fehler, da meine Aufgabe, denke ich, nur mit einer while - Schleife funktioniert. Hier das Problem: (Ich erwarte nicht, dass mir irgendjemand einen Code gibt, nur eine Idee, warum mein Code nicht funktioniert):
Das Problem ist nämlich, ich arbeite mit einer Datenbank, die viele Firmen enthält; für jede gibt es eine Excelfile mit unterschiedlich vielen Entitäten. Jede Firma hat eine bestimmte Menge an Standardspalten (z.B. A bis O) wobei jede eine unterschiedliche Anzahl an zusätzlichen Spalten (Nr.1... Nr.n) besteht. Das Ziel ist es nun, abhängig von der Zeilenzahl und Spaltenzahl, jeweils durch die einzelnen Spalten zu gehen und diese Korrektur durchführen (bestimmtes Zeichen ersetzen). D.h. Spalte "Nr.1" soll durch alle Zeilen gehen und die Substitution durchgehen, anschließend Spalte "Nr.2" usw. bis man zur Spalte "Nr.n" gekommen ist.
Viele Grüße
Ich brauche nämlich dringend den Fehler, da meine Aufgabe, denke ich, nur mit einer while - Schleife funktioniert. Hier das Problem: (Ich erwarte nicht, dass mir irgendjemand einen Code gibt, nur eine Idee, warum mein Code nicht funktioniert):
Das Problem ist nämlich, ich arbeite mit einer Datenbank, die viele Firmen enthält; für jede gibt es eine Excelfile mit unterschiedlich vielen Entitäten. Jede Firma hat eine bestimmte Menge an Standardspalten (z.B. A bis O) wobei jede eine unterschiedliche Anzahl an zusätzlichen Spalten (Nr.1... Nr.n) besteht. Das Ziel ist es nun, abhängig von der Zeilenzahl und Spaltenzahl, jeweils durch die einzelnen Spalten zu gehen und diese Korrektur durchführen (bestimmtes Zeichen ersetzen). D.h. Spalte "Nr.1" soll durch alle Zeilen gehen und die Substitution durchgehen, anschließend Spalte "Nr.2" usw. bis man zur Spalte "Nr.n" gekommen ist.
Viele Grüße
Zuletzt geändert von leonard_24 am Di Aug 07, 2018 11:29 am, insgesamt 1-mal geändert.