Seite 1 von 1

Vektoreinträge effizient umbenennen

Verfasst: Mo Nov 12, 2018 12:20 am
von FR1712
Hallo zusammen :)

Im Rahmen meiner Abschlussarbeit sehe ich mich das erste mal mit echten und großen Datensätzen konfrontiert und sogleich kommt man mit dem Wissen aus den Statistikseminaren der Uni schnell an seine Grenzen. Für mich als quasi Neuling mit R stellt ein Datensatz mit 58.000 Zeilen bereits eine große Herausforderung dar. Bis zur deskriptiven Analyse, die man sonst an der Uni auf die leichte Schulter genommen hat, bin ich noch nicht einmal gekommen. Ich bin noch dabei, mir einen Überblick über die Daten zu verschaffen, diese zu sortieren und zu bereinigen.

Mein Datensatz zeigt Handelsverbindungen zwischen 1815 und 1856, Herkunfts- und Zielhafen und das gehandelte Gut mit der Menge im jeweiligen Jahr.
Der Tabellenkopf sieht also so aus:

Starthafen|Zielhafen|Ware |1815|1816|1817| ... |1856
-------------------------------------------------------------------
Danzig |Hamburg|Weizen| 30 | 35 | 33 |... | 60


Ausgehend von den gehandelten Waren will ich die Daten nun analysieren
In der Spalte "Ware" finden sich fast 700 verschiedene Warensorten. Das ist unbrauchbar und vieles doppelt sich, da manches einfach unterschiedlich geschrieben wurde.
Ich habe mir also von R mit Hilfe der table Funktion eine Liste mit allen Waren und ihren absoluten Häufigkeiten ausgeben lassen. Das ganze habe ich in eine Excel-Tabelle geworfen und dann jeder Ware eine Kategorie zugeordnet. Damit komme ich auf 35 Kategorien, was ich gar nicht schlecht finde. Wahrscheinlich werden es im Zuge der weiteren Analyse noch weniger.
Diese Waren-Kategorien will ich nun mit in die Tabelle einbauen, am besten einfach als zusätzliche Spalte.
Ungefähr so:
Starthafen|Zielhafen|Ware |Kategorie|1815|1816|1817| ... |1856
-------------------------------------------------------------------
Danzig |Hamburg|Weizen| Getreide | 30 | 35 | 33 |... | 60

Wie kann ich das am sinnvollsten lösen?
Ich hatte mir überlegt, dass es irgendwie so funktioniert, dass ich mir einen Vektor mit den Warenbezeichnungen ausgeben lasse, und dann irgendwie die Namen der Güter durch ihre Kategorie ersetze. Nun will ich da aber nicht nochmal alle 700 Warennamen eintippen und überall dazuschreiben, wie die zu ersetzen sind. Und dann ist ja auch das Problem, dass Weizen vielleicht unter den 58000 Einträgen 5000 mal auftaucht, Roggen vielleicht 3000 mal und beides soll die Kategorie Getreide erhalten.

Es wäre sehr sehr schön, wenn ihr da irgendeine gute Funktion oder so kennt, mit der man das schnell erledigen kann.
Danke schonmal!

Re: Vektoreinträge effizient umbenennen

Verfasst: Mo Nov 12, 2018 7:39 am
von EDi
Ohne ein reproduzierbares Beispiel kann ich nur rumwundern.
Wie haben einen Vektor "vec" der umkodiert werden soll.
Zuerst brauchst du ein data.frame "mapdf" mit zwei Spalten "old" und "new". Old entspricht idealer Weise unique(vec), new sind die zuzuordnenden neuen Codes.

Dann kann man den umkodierten Vektor so erhalten:

Code: Alles auswählen

mapdf$new[match(vec, mapdf$old)]
Fall ein Wert in der map fehlt, wirds NA. mapdf kannst du vermutlich direkt us deine Excel Tabelle nehmen.

Re: Vektoreinträge effizient umbenennen

Verfasst: Mo Nov 12, 2018 8:26 am
von jogo
Hallo FR1712,

willkommen im Forum!
Auch merge() kann das für Dich erledigen. Du benötigst eine Tabelle der Form:

Code: Alles auswählen

Ware  | Kategorie
Weizen| Getreide
...
Gruß, Jörg

Re: Vektoreinträge effizient umbenennen

Verfasst: Di Nov 13, 2018 11:00 am
von FR1712
Vielen Dank! Hat geklappt! 😊