Определите имя с данным именем, представленным инициалами - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать набор данных SAS с двумя разными переменными.У должно быть полное имя.Переменная Names должна соответствовать имени с указанным именем, представленным инициалами, например, Джонсон Майк должен быть «Джонсон М.»и Смит Роберт Джон должен быть "Смит RJ".Я не уверен, как создать переменную Names, кто-нибудь, кто может помочь?

data names;
Length y $ 40;
Input y &;
Names = y;
DATALINES;
Johnson Mike
Smith Robert John
Jones Linda Mary
Brown Marcus
run;

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

это должно работать с циклом do

 data names_final;
    set names;
     do _n_ = 1 to countw(Y,' ');
        if _n_ = 1 then name =scan(Y,1);
        else name = catx(' ', name, cats(first(scan(y,_n_)),'.'));
    end;
 run;

, вы также можете сделать

data names_final;
set names;
 name = cats(catx(' ', scan(y,1), catx('. ', first(scan(y,2)),first(scan(y,3) ))),'.');
run; 
0 голосов
/ 02 декабря 2018

Может быть полезна функция 'countw' 'scan' 'first' и 'catx'.
1. Получите количество слов Имени;
2. Сохраните первое слово;
3. Сделайтецикл, соединяющий первое слово и первую букву каждого отдельного слова (ожидаем первое слово);

...