Hallo Silke, also ich habe in meinen Daten eine Trefferwahrscheinlichkeit von 99,87 %. Eine Hausnummer beginnt ab der ersten Ziffer im String (1). Dann prüfe ich die Hausnummer bis zum vorletzten Zeichen (2). Das letzte Zeichen ist mir egal. Kommt nur noch ein 'und' vor, dann ist es ok (3). Kommt nur noch ein 'bis' vor, dann ist es auch ok (4). Sonst gebe ich auf und der ganze Text wird Straße (5). Als Sonderzeichen habe ich nur den Bindestrich und Leerzeichen, aber die sind natürlich ok. length STRASSE MYSTRASSE MYHAUSNR $60 HAUSNR $10 FALL 8; /* Wir droeseln Strasse und Hausnummer auf: */ if anydigit (ADDRESS_LINE_1_TXT) then do; MYSTRASSE = substr (ADDRESS_LINE_1_TXT, 1, anydigit (ADDRESS_LINE_1_TXT) - 1); /* ad (1): */ MYHAUSNR = substr (ADDRESS_LINE_1_TXT, anydigit (ADDRESS_LINE_1_TXT)); /* Kommt noch eine Information nach der Hausnummer? */ /* ad (2): */ if anyalpha (substr (left (reverse (MYHAUSNR)), 2)) then do; /* und und bis lassen wir so:*/ /* ad (3): */ if not anyalpha (tranwrd (lowcase (MYHAUSNR), 'und', ' ')) then FALL = 1; /* ad (4): */ else if not anyalpha (tranwrd (lowcase (MYHAUSNR), 'bis', ' ')) then FALL = 1; /* sonst geben wir auf: */ else FALL = 2; end; else do; FALL = 1; end; end; else FALL = 2; /* ad (5): */ if FALL = 2 then STRASSE = ADDRESS_LINE_1_TXT; else do; /* Fall = 1 */ HAUSNR = MYHAUSNR; STRASSE = MYSTRASSE; end; Gruß Benno
... View more