Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?
Moderatoren: EDi , jogo
Ahmouri
Beitrag
von Ahmouri » Mi Dez 19, 2018 12:38 pm
Hallo Zusammen,
da ich mit der einen Erweiterung meines Tools nicht weiterkam, hier eine andere Idee, mit der ich bereits angefangen habe.
Um folgenden Dateien geht es und ich hoffe, dass ich diesmal alles richtig darstellen kann, damit ihr mir besser weiterhelfen könnt.
Code: Alles auswählen
> str(real_city)
'data.frame': 13114 obs. of 4 variables:
$ osm_id : Factor w/ 11016 levels "1015094","1015095",..: 549 2240 9548 9548 9548 9548 9548 9548 9548 9548 ...
$ ort : Factor w/ 10452 levels "","Öhningen",..: 12 12 13 13 13 13 13 13 13 13 ...
$ plz : int 78267 54298 52062 52064 52066 52068 52070 52072 52074 52076 ...
$ bundesland: Factor w/ 17 levels "","Baden-Württemberg",..: 2 12 11 11 11 11 11 11 11 11 ...
Code: Alles auswählen
> str(my_city)
'data.frame': 7 obs. of 2 variables:
$ costumer_zipcodes: int 53666 53123 48455 50667 12345 87356 10234
$ costumer_cities : Factor w/ 7 levels "Aachen","Berlin",..: 1 3 7 6 5 4 2
in beiden Dateien sind Städtenamen plus Postleitzahl vorhanden. Aber: im Datensatz my_city sind Fehler eingebaut. Die Städtenamen passen nicht zu den PlZen. Um dies zu überprüfen wäre es doch sinnvoll eine IF Schleife einzubauen nachdem man über Filter oder which die gleichen Städtenamen ausgemacht hat,oder?
VG Ahmouri
Athomas
Beiträge: 769 Registriert: Mo Feb 26, 2018 8:19 pm
Beitrag
von Athomas » Mi Dez 19, 2018 1:00 pm
Du solltest zunächst mal Deine Datensätze "richtig" einlesen: vielleicht mit dem an anderer Stelle hier im Forum als anfängerfreundlich beschriebenen package "rio"!?
Ahmouri
Beitrag
von Ahmouri » Mi Dez 19, 2018 2:01 pm
Hallo Athomas,
das letzte Mal hieß es, dass ich es mit str() machen soll. Aber hier nochmal mit Rio und dem Befehl Import()
Code: Alles auswählen
> import("zuordnung_plz_ort.csv")
osm_id ort plz bundesland
1 1104550 Aach 78267 Baden-Württemberg
2 1255910 Aach 54298 Rheinland-Pfalz
3 62564 Aachen 52062 Nordrhein-Westfalen
4 62564 Aachen 52064 Nordrhein-Westfalen
5 62564 Aachen 52066 Nordrhein-Westfalen
6 62564 Aachen 52068 Nordrhein-Westfalen
7 62564 Aachen 52070 Nordrhein-Westfalen
8 62564 Aachen 52072 Nordrhein-Westfalen
9 62564 Aachen 52074 Nordrhein-Westfalen
10 62564 Aachen 52076 Nordrhein-Westfalen
11 62564 Aachen 52078 Nordrhein-Westfalen
12 62564 Aachen 52080 Nordrhein-Westfalen
13 915486 Aalen 73430 Baden-Württemberg
14 915486 Aalen 73431 Baden-Württemberg
15 915486 Aalen 73432 Baden-Württemberg
16 915486 Aalen 73433 Baden-Württemberg
17 915486 Aalen 73434 Baden-Württemberg
18 413109 Aarbergen 65326 Hessen
19 448770 Aasbüttel 25560 Schleswig-Holstein
20 158409 Abenberg 91183 Bayern
21 956651 Abensberg 93326 Bayern
22 1244276 Abentheuer 55767 Rheinland-Pfalz
23 1015097 Absberg 91720 Bayern
24 410485 Abstatt 74232 Baden-Württemberg
25 2389084 Abtsbessingen 99713 Thüringen
26 915445 Abtsgmünd 73453 Baden-Württemberg
27 537061 Abtsteinach 69518 Hessen
28 283691 Abtswind 97355 Bayern
29 1244067 Abtweiler 55568 Rheinland-Pfalz
30 2806596 Achberg 88147 Baden-Württemberg
31 452972 Achern 77855 Baden-Württemberg
32 1182036 Achim 28832 Niedersachsen
33 959175 Achslach 94250 Bayern
34 2801019 Achstetten 88480 Baden-Württemberg
35 548033 Acht 56729 Rheinland-Pfalz
36 1246405 Achtelsbach 55767 Rheinland-Pfalz
37 548502 Achterwehr 24239 Schleswig-Holstein
38 1417214 Achtrup 25917 Schleswig-Holstein
39 2825844 Adelberg 73099 Baden-Württemberg
40 1399100 Adelebsen 37139 Niedersachsen
41 1796300 Adelheidsdorf 29352 Niedersachsen
42 915446 Adelmannsfelden 73486 Baden-Württemberg
43 943553 Adelschlag 85111 Bayern
44 1016518 Adelsdorf 91325 Bayern
45 403733 Adelsheim 74740 Baden-Württemberg
46 534077 Adelshofen 91587 Bayern
47 933549 Adelshofen 82276 Bayern
48 452562 Adelsried 86477 Bayern
49 163655 Adelzhausen 86559 Bayern
50 1060416 Adenau 53518 Rheinland-Pfalz
51 1246784 Adenbach 67742 Rheinland-Pfalz
52 1363679 Adenbüttel 38528 Niedersachsen
53 1392133 Adendorf 21365 Niedersachsen
54 191347 Adlkofen 84166 Bayern
55 391131 Admannshagen-Bargeshagen 18211 Mecklenburg-Vorpommern
56 443610 Adorf/Vogtland 8626 Sachsen
57 448016 Aebtissinwisch 25572 Schleswig-Holstein
58 1169356 Aerzen 31855 Niedersachsen
59 405290 Affalterbach 71563 Baden-Württemberg
60 393482 Affing 86444 Bayern
61 1992924 Affinghausen 27257 Niedersachsen
62 1171872 Affler 54689 Rheinland-Pfalz
63 445842 Agathenburg 21684 Niedersachsen
64 448765 Agethorst 25560 Schleswig-Holstein
65 403747 Aglasterhausen 74858 Baden-Württemberg
66 191355 Aham 84168 Bayern
67 162877 Ahaus 48683 Nordrhein-Westfalen
68 965596 Ahausen 27367 Niedersachsen
69 1408072 Ahlbeck 17375 Mecklenburg-Vorpommern
70 1808860 Ahlden 29693 Niedersachsen
71 548612 Ahlefeld-Bistensee 24358 Schleswig-Holstein
72 152285 Ahlen 59227 Nordrhein-Westfalen
73 152285 Ahlen 59229 Nordrhein-Westfalen
74 446435 Ahlerstedt 21702 Niedersachsen
75 2409456 Ahlsdorf 6313 Sachsen-Anhalt
76 1273264 Ahlstädt 98553 Thüringen
77 530915 Ahnatal 34292 Hessen
78 1145086 Ahneby 24996 Schleswig-Holstein
79 1797682 Ahnsbeck 29353 Niedersachsen
80 1169362 Ahnsen 31708 Niedersachsen
81 959667 Aholfing 94345 Bayern
82 959803 Aholming 94527 Bayern
83 401808 Ahorn 74744 Baden-Württemberg
84 956872 Ahorn 96482 Bayern
85 1071012 Ahorntal 95491 Bayern
86 1021829 Ahrbrück 53506 Rheinland-Pfalz
87 382442 Ahrensbök 23623 Schleswig-Holstein
88 453746 Ahrensburg 22926 Schleswig-Holstein
89 1318349 Ahrensfelde 16356 Brandenburg
90 374204 Ahrenshagen-Daskow 18320 Mecklenburg-Vorpommern
91 1406816 Ahrenshöft 25853 Schleswig-Holstein
92 374244 Ahrenshoop 18347 Mecklenburg-Vorpommern
93 1406979 Ahrenviöl 25885 Schleswig-Holstein
94 1406977 Ahrenviölfeld 24896 Schleswig-Holstein
95 1406977 Ahrenviölfeld 25885 Schleswig-Holstein
96 161897 Aichach 86551 Bayern
97 958122 Aicha vorm Wald 94529 Bayern
98 2792688 Aichelberg 73101 Baden-Württemberg
99 935172 Aichen 86479 Bayern
100 943754 Aichhalden 78733 Baden-Württemberg
101 2806735 Aichstetten 88317 Baden-Württemberg
102 2796466 Aichtal 72631 Baden-Württemberg
103 2792901 Aichwald 73773 Baden-Württemberg
104 958099 Aidenbach 94501 Bayern
105 388769 Aidhausen 97491 Bayern
106 722153 Aidlingen 71134 Baden-Württemberg
107 956660 Aiglsbach 84089 Bayern
108 535001 Ailertchen 56459 Rheinland-Pfalz
109 162453 Aindling 86447 Bayern
110 941761 Ainring 83404 Bayern
111 956819 Aislingen 89344 Bayern
112 959661 Aiterhofen 94330 Bayern
113 1244183 Aitern 79677 Baden-Württemberg
114 2806736 Aitrach 88319 Baden-Württemberg
115 447974 Aitrang 87648 Bayern
116 1329407 Aken (Elbe) 6385 Sachsen-Anhalt
117 1329407 Aken (Elbe) 6386 Sachsen-Anhalt
118 1284770 Aland 39615 Sachsen-Anhalt
119 2186953 Albaching 83544 Bayern
120 2786234 Albbruck 79774 Baden-Württemberg
121 423032 Albersdorf 25767 Schleswig-Holstein
122 2778355 Albersdorf 7646 Thüringen
123 2792707 Albershausen 73095 Baden-Württemberg
124 1252774 Albersweiler 76857 Rheinland-Pfalz
125 283563 Albertshofen 97320 Bayern
126 1246578 Albessen 66871 Rheinland-Pfalz
127 1248583 Albig 55234 Rheinland-Pfalz
128 1254398 Albisheim (Pfrimm) 67308 Rheinland-Pfalz
129 1471102 Albsfelde 23909 Schleswig-Holstein
130 2779017 Albstadt 72458 Baden-Württemberg
131 2779017 Albstadt 72459 Baden-Württemberg
132 2779017 Albstadt 72461 Baden-Württemberg
133 158407 Aldenhoven 52457 Nordrhein-Westfalen
134 958104 Aldersbach 94501 Bayern
135 1231975 Aldingen 78554 Baden-Württemberg
136 962467 Alerheim 86733 Bayern
137 1015138 Alesheim 91793 Bayern
138 568238 Aletshausen 86480 Bayern
139 1269727 Alf 56859 Rheinland-Pfalz
140 401623 Alfdorf 73553 Baden-Württemberg
141 401623 Alfdorf 73655 Baden-Württemberg
142 966167 Alfeld 91236 Bayern
143 1168905 Alfeld (Leine) 31061 Niedersachsen
144 1821138 Alfhausen 49594 Niedersachsen
145 1269816 Alflen 56828 Rheinland-Pfalz
146 1079020 Alfstedt 27432 Niedersachsen
147 172095 Alfter 53347 Nordrhein-Westfalen
148 91859 Algermissen 31191 Niedersachsen
149 238961 Alheim 36211 Hessen
150 546611 Alken 56332 Rheinland-Pfalz
151 396563 Alkersleben 99310 Thüringen
152 1428588 Alkersum 25938 Schleswig-Holstein
153 1245131 Allenbach 55758 Rheinland-Pfalz
154 443591 Allendorf 35108 Hessen
155 539713 Allendorf 56370 Rheinland-Pfalz
156 1273287 Allendorf 7426 Thüringen
157 418611 Allendorf (Lumda) 35469 Hessen
158 1244219 Allenfeld 55595 Rheinland-Pfalz
159 2784841 Allensbach 78476 Baden-Württemberg
160 158406 Allersberg 90584 Bayern
161 30015 Allershausen 85391 Bayern
162 2801344 Alleshausen 88422 Baden-Württemberg
163 933491 Alling 82239 Bayern
164 445854 Allmannshofen 86695 Bayern
165 2801315 Allmannsweiler 88348 Baden-Württemberg
166 2803631 Allmendingen 89604 Baden-Württemberg
167 400939 Allmersbach im Tal 71573 Baden-Württemberg
168 2397385 Allstedt 6542 Sachsen-Anhalt
169 1567454 Almdorf 25821 Schleswig-Holstein
170 418894 Almersbach 57610 Rheinland-Pfalz
171 58618 Alpen 46519 Nordrhein-Westfalen
172 453150 Alpenrod 57642 Rheinland-Pfalz
173 453150 Alpenrod 57647 Rheinland-Pfalz
174 2411295 Alperstedt 99195 Thüringen
175 935834 Alpirsbach 72275 Baden-Württemberg
176 532368 Alsbach 56237 Rheinland-Pfalz
177 452415 Alsbach-Hähnlein 64665 Hessen
178 157993 Alsdorf 52477 Nordrhein-Westfalen
179 422316 Alsdorf 57518 Rheinland-Pfalz
180 1163504 Alsdorf 54668 Rheinland-Pfalz
181 1253873 Alsenz 67821 Rheinland-Pfalz
182 418327 Alsfeld 36304 Hessen
183 1248686 Alsheim 67577 Rheinland-Pfalz
184 1332300 Alsleben 6425 Sachsen-Anhalt
185 2792885 Altbach 73776 Baden-Württemberg
186 1157542 Alt Bennebek 24848 Schleswig-Holstein
187 394333 Alt Bukow 18233 Mecklenburg-Vorpommern
188 1322902 Altdöbern 3229 Brandenburg
189 190875 Altdorf 84032 Bayern
190 722061 Altdorf 71155 Baden-Württemberg
191 902680 Altdorf 72655 Baden-Württemberg
192 1252492 Altdorf 67482 Rheinland-Pfalz
193 966164 Altdorf bei Nürnberg 90518 Bayern
194 548573 Alt Duvenstedt 24782 Schleswig-Holstein
195 548573 Alt Duvenstedt 24791 Schleswig-Holstein
196 548573 Alt Duvenstedt 24811 Schleswig-Holstein
197 1438081 Altefähr 18573 Mecklenburg-Vorpommern
198 964628 Alteglofsheim 93087 Bayern
199 168547 Altena 58762 Nordrhein-Westfalen
200 1021826 Altenahr 53505 Rheinland-Pfalz
201 1244034 Altenbamberg 55585 Rheinland-Pfalz
202 148072 Altenbeken 33184 Nordrhein-Westfalen
203 455484 Altenberg 1773 Sachsen
204 455484 Altenberg 1778 Sachsen
205 2458400 Altenberga 7768 Thüringen
206 155779 Altenberge 48341 Nordrhein-Westfalen
207 1273353 Altenbeuthen 7338 Thüringen
208 394512 Altenbuch 97901 Bayern
209 1263721 Altenburg 4600 Thüringen
210 537133 Altendiez 65624 Rheinland-Pfalz
211 962080 Altendorf 92540 Bayern
212 1077529 Altendorf 96146 Bayern
213 1263905 Altenfeld 98701 Thüringen
214 1246622 Altenglan 66885 Rheinland-Pfalz
215 2876347 Altengottern 99991 Thüringen
216 1427896 Altenhagen 17091 Mecklenburg-Vorpommern
217 1286652 Altenhausen 39343 Sachsen-Anhalt
218 554562 Altenhof 24340 Schleswig-Holstein
219 1424152 Altenhof 17209 Mecklenburg-Vorpommern
220 554747 Altenholz 24161 Schleswig-Holstein
221 1252363 Altenkirchen 66903 Rheinland-Pfalz
222 1437950 Altenkirchen 18556 Mecklenburg-Vorpommern
223 418895 Altenkirchen (Westerwald) 57610 Rheinland-Pfalz
224 382409 Altenkrempe 23730 Schleswig-Holstein
225 1026858 Altenkunstadt 96264 Bayern
226 941639 Altenmarkt an der Alz 83352 Bayern
227 1460228 Altenmedingen 29575 Niedersachsen
228 447188 Altenmoor 25335 Schleswig-Holstein
229 452561 Altenmünster 86450 Bayern
230 374185 Altenpleen 18445 Mecklenburg-Vorpommern
231 2796467 Altenriet 72657 Baden-Württemberg
232 450108 Altenstadt 63674 Hessen
233 936742 Altenstadt 86972 Bayern
234 941073 Altenstadt 89281 Bayern
235 1059433 Altenstadt an der Waldnaab 92665 Bayern
236 1174479 Altensteig 72213 Baden-Württemberg
237 964624 Altenthann 93177 Bayern
238 1427888 Altentreptow 17087 Mecklenburg-Vorpommern
239 1204726 Alterkülz 56288 Rheinland-Pfalz
240 2829503 Altersbach 98587 Thüringen
241 180669 Altertheim 97237 Bayern
242 191496 Altfraunhofen 84169 Bayern
243 933521 Althegnenberg 82278 Bayern
244 2802280 Altheim 88499 Baden-Württemberg
245 2803632 Altheim 89605 Baden-Württemberg
246 2790973 Altheim (Alb) 89174 Baden-Württemberg
247 933498 Althengstett 75382 Baden-Württemberg
248 1250687 Althornbach 66484 Rheinland-Pfalz
249 400938 Althütte 71566 Baden-Württemberg
250 1318343 Althüttendorf 16247 Brandenburg
[ reached getOption("max.print") -- omitted 1836 rows ]
VG Ahmouri
Athomas
Beiträge: 769 Registriert: Mo Feb 26, 2018 8:19 pm
Beitrag
von Athomas » Mi Dez 19, 2018 2:23 pm
das letzte Mal hieß es, dass ich es mit str() machen soll.
Da musst Du was falsch verstanden haben - str steht für "structure" und zeigt Dir die interne Struktur eines R-Objekts an
!
Oho - da hätte ich gehofft, dass rio das richtig hinkriegt...
Was ist mit den Datensätzen, sind die geheim?
Ahmouri
Beitrag
von Ahmouri » Mi Dez 19, 2018 2:37 pm
Achso, die my_city Datei hatte ich vergessen.
Code: Alles auswählen
> import("Beispiel.csv")
[1] costumer_zipcodes costumer_cities\r53666 Aachen\r53123 Bonn\r48455 Rheine\r50667
[6] Koeln\r12345 Hamburg\r87356 Dresden\r10234 Berlin
hm, das wird komisch angezeigt.
EDi
Beiträge: 1599 Registriert: Sa Okt 08, 2016 3:39 pm
Beitrag
von EDi » Mi Dez 19, 2018 8:04 pm
Ich würde ja mit data.table:fread einlesen, aber das trägt hier nichts bei.
Zuerst würde ich alle Faktoren in Charakter umwandeln(oder besser direkt beim einlesen darauf verzichten).
Wenn der Zeichensatz, dann auch noch stimmt kann man an das Problem gehen:
Ich würde einen join über die zipcoded machen und danach alles rauswerfen was gleich ist.Für den Rest muss man sich dann entscheiden was der richtige Name ist.
Athomas
Beiträge: 769 Registriert: Mo Feb 26, 2018 8:19 pm
Beitrag
von Athomas » Mi Dez 19, 2018 8:48 pm
Ich würde ja mit data.table:fread einlesen, aber das trägt hier nichts bei.
So ist es - rio benutzt bei .csv-Dateien (oder besser: bei Dateien mit der Endung .csv) genau fread - damit es auch schön schnell wird!
Da im Bereich der csv-Dateien großer Wildwuchs herrscht (Namen sind Schall und Rauch), nehme ich an, dass die vorliegenden Formatierungen nicht in die üblichen Schemata passen.
Aber wie gesagt, das ist ein Blick in die Glaskugel, ohne die Originaldaten kann man (bzw. ich) nichts Fundiertes sagen...
Ahmouri
Beitrag
von Ahmouri » Do Dez 20, 2018 9:44 am
@Athomas. Verzeih mir, wenn ich das nicht richtig aufgefasst habe. Ich bin aber im Anfängerstadium und gebe dies auch zu. Ich versuche mich natürlich so gut wie es geht zu informieren, aber kann dennoch nicht alles auf die schnelle lernen.
Danke EDi,
ist das der dplyr package?
Müsste ich dann anti.join verwenden, um zu filtern?
Meine Idee war es erstmal die Städte zu vergleichen und daraufhin die "matchings" dann in Bezug auf die PLZ vergleichen. Ist das der richtige Gedanke oder geht es einfacher?
VG Ahmouri
EDi
Beiträge: 1599 Registriert: Sa Okt 08, 2016 3:39 pm
Beitrag
von EDi » Fr Dez 21, 2018 5:00 pm
ist das der dplyr package
Nicht zwingend, geht auch mit base-r oder z. B. data.table
Müsste ich dann anti.join verwenden, um zu filtern?
Nicht zwingend, wäre aber direkter.
Meine Idee war es erstmal die Städte zu vergleichen und daraufhin die "matchings" dann in Bezug auf die PLZ vergleichen. Ist das der richtige Gedanke oder geht es einfacher?
Ich wäre es vermutlich andersrum angegangen. PLZ als wahr ansehen und daran matchen.
Du kannst auch einen fuzzyjoin probieren und die die Levenshtein distanz berechnen um zu sehen wie unähnlich die matches sind um z. B. einen threshold zu setzen.