Vektoreinträge effizient umbenennen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
FR1712
Beiträge: 17
Registriert: So Nov 11, 2018 11:23 pm

Vektoreinträge effizient umbenennen

Beitrag 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!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Vektoreinträge effizient umbenennen

Beitrag 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.
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
Bild.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Vektoreinträge effizient umbenennen

Beitrag 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
FR1712
Beiträge: 17
Registriert: So Nov 11, 2018 11:23 pm

Re: Vektoreinträge effizient umbenennen

Beitrag von FR1712 »

Vielen Dank! Hat geklappt! 😊
Antworten