If statement 如何从具有不同字数的异构变量中提取中间名?
我在SAS工作,我有以下数据集,我需要帮助从不同字数的异构变量中提取中间名 我以前看过,但它对我不起作用。 我的名为统计学家的数据框架只有一个变量 全名If statement 如何从具有不同字数的异构变量中提取中间名?,if-statement,sas,If Statement,Sas,我在SAS工作,我有以下数据集,我需要帮助从不同字数的异构变量中提取中间名 我以前看过,但它对我不起作用。 我的名为统计学家的数据框架只有一个变量 全名 罗纳尔多·费舍尔 H.O.Meir Lee 莎拉·金·伊万 马可·西纳 在名为middle的新列中,只有姓和名的名称应为空。 我尝试了以下代码,但不起作用: data statisticians; length middle $10; set statisticians; if count = 2 then middle=.;
罗纳尔多·费舍尔 H.O.Meir Lee
莎拉·金·伊万
马可·西纳 在名为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;
任何帮助都将不胜感激。正则表达式是您需要的。你可能需要摆弄它,或者在网上找到一个涵盖更多案例的。是测试它们的好资源
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
如何区分中间名和双名或双姓?