Как извлечь отчество из гетерогенной переменной с разным количеством слов? - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю в SAS, и у меня есть следующий набор данных, из которого мне нужна помощь для извлечения отчества из гетерогенной переменной с различным количеством слов.

Я видел ссылку , но это не такне работа для меня.В моем информационном фрейме по имени статистики есть только 1 переменная

Полное имя
Роналду Аль Фишер

Хо Меир Ли
Сара Ким Иван
Марко Сина

Имена с первыми только фамилии должны быть пустыми в новом столбце с именем middle.Я попробовал следующий код, но он не работает:

data statisticians; length middle $10;   set statisticians;    if
count = 2 then middle=.;    if count = 3 then middle= scan(name,2);   
if count = 4 then middle=scan(name,2);  run;

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 27 сентября 2019

Регулярные выражения - это то, что вы ищете.Возможно, вам придется поиграть с этим или найти один онлайн, который охватывает больше случаев. regex101.com - хороший ресурс для их тестирования.

data names;
  input Full_name $ 1-50;
  datalines;
Ronaldo Al Fisher

H. O. Meir Lee
Sara Kim Ivan
Marco Sina
;

data names_with_middle;
  set names;
  regex = prxparse('s/^(.+?\s+)(\w+)\s+(\w+)$/$2/');
  if prxmatch(regex, strip(full_name)) then 
    middle_name = prxchange(regex, 1, strip(full_name));
  drop regex;
run;

Результаты:

Obs   Full_name            middle_name
1     Ronaldo Al Fisher    Al
2  
3     H. O. Meir Lee       Meir
4     Sara Kim Ivan        Kim
5     Marco Sina
...