Firmen einzeln auflisten, Subfirmen spaltenweise zuordnen
Verfasst: Fr Aug 17, 2018 2:28 pm
Hallo liebes Forum,
ich bräuchte mal wieder fachlichen Rat bei einem Problem:
Ich habe eine Exceldatei mit Unternehmensdaten eingelesen, x (2 Spalten, 20.000 Zeilen)
In der Exceldateien gibt es das Feld "Firmen ID" (Spalte 2), wodurch ein eindeutige Zuordnung mgl. ist, diese kann jedoch mehrfach vorkommen, da in der Spalte zuvor (Spalte 1) die dazugehörigen Subcompanies aufgeführt sind. Also etwa so:
Die Aufgabe besteht nun darin, die Firmen ID´s jeweils nur 1 mal aufzuführen, allerdings sollen die Subfirmen (ich weiß nicht, wie viele Subfirmen zu einer Firma gehören) spaltenweise hinter der jeweiligen Firmen ID aufgelistet werden, in etwa so:
Als erstes hätte ich einen neuen Dataframe "z" erstellt, der mir die unique Firmen ID´s ausgibt:
Als nächstes hätte ich eine while-Schleife gebastelt, die in dem data.frame "x" durchgeht und die einzelnen Subfirmen den Firmen ID´s in dem neuen Vektor z zuordnet...
Mein Code: Von der Logik her, soll er durch die Zeilen der Spalte Firmen ID gehen (Spalte 2), so lange, wie sie !=0 ist. Wenn der Wert der vorherigen Zelle dem der jetzigen entspricht, heißt das, dass es mehrere Subfirmen gibt. Die sollen dann jeweils in eine eigene Spalte (Laufvariable r=3; d.h. wenn es z.B. 2 Subfirmen gibt, werden diese in Spalte 3 und 4 der entsprechenden Zeile geschrieben) geschrieben werden. Falls das nicht der Fall ist, wird r wieder auf 3 gesetzt (d.h. die 3te Spalte):
Dabei breche ich mir aber gerade alles ab (( Es kommt "+" anstelle von ">" in der Konsole
Zusätzlich kommt die Fehlermeldung:
Hat jmd. vllt. einen Weg der einfacher ist?
Besten Dank und viele Grüße
ich bräuchte mal wieder fachlichen Rat bei einem Problem:
Ich habe eine Exceldatei mit Unternehmensdaten eingelesen, x (2 Spalten, 20.000 Zeilen)
In der Exceldateien gibt es das Feld "Firmen ID" (Spalte 2), wodurch ein eindeutige Zuordnung mgl. ist, diese kann jedoch mehrfach vorkommen, da in der Spalte zuvor (Spalte 1) die dazugehörigen Subcompanies aufgeführt sind. Also etwa so:
Code: Alles auswählen
Subfirma | Firmen ID
a GmbH | 12345
b GmbH | 12345
c AG | 98745
d AG | 98745
...
Code: Alles auswählen
Firmen ID | Subcompany 1 | Subcompany 2 ...
12345 | a GmbH | b GmbH ...
98745 | c AG | d AG ...
...
Code: Alles auswählen
z <- data.frame(x$Firmen.ID)
z <- unique(z)
Mein Code: Von der Logik her, soll er durch die Zeilen der Spalte Firmen ID gehen (Spalte 2), so lange, wie sie !=0 ist. Wenn der Wert der vorherigen Zelle dem der jetzigen entspricht, heißt das, dass es mehrere Subfirmen gibt. Die sollen dann jeweils in eine eigene Spalte (Laufvariable r=3; d.h. wenn es z.B. 2 Subfirmen gibt, werden diese in Spalte 3 und 4 der entsprechenden Zeile geschrieben) geschrieben werden. Falls das nicht der Fall ist, wird r wieder auf 3 gesetzt (d.h. die 3te Spalte):
Code: Alles auswählen
i <- 1
r<- 3
while(x[i,2] !=0) {
if (x[i,2] == x[i-1,2]) {
z[i,r] == x[i,1]
i <- i+1
}
else {
r <- 3
i <- i+1
}
}
Zusätzlich kommt die Fehlermeldung:
Code: Alles auswählen
Error in if (x[i, 2] == x[i - 1, 2]) { : argument is of length zero
Besten Dank und viele Grüße