如何将其中带有空格的姓氏提取为 'one' name/'en bloc'?

How do I extract surnames with spaces in them as 'one' name/'en bloc'?

任何人都可以建议一种将其中有空格的姓氏提取为单个名称块的方法吗?

我在数据集中有这样的名字

clear
input str40 name
"R. P. de la Espriella Guerrero"          
"J. de Carvalho Ponce"                 
"E. De Freitas Drumond"                
"R. de la Fuente and M. E. Medina-Mora"
"C. Van Heyningen and I. D. Watson"
"A. Z. van de Wiel and D. W. de Lange"
end

我只想要第一个姓氏(因此只有第一作者,不包括其他作者),但我想要提取那些有空格的名字 'en bloc'。因此,最终得到如下数据集,例如:

clear
input str40 name
"de la Espriella Guerrero"          
"de Carvalho Ponce"                 
"De Freitas Drumond"               
"de la Fuente"
"Van Heyningen"
"van de Wiel"
end

如有任何帮助,我将不胜感激。

这是实现我在上面评论中给出的两条规则的代码。假设使用的Stata版本支持unicode字符串函数。

clear
input str40 name
"R. P. de la Espriella Guerrero"          
"J. de Carvalho Ponce"                 
"E. De Freitas Drumond"                
"R. de la Fuente and M. E. Medina-Mora"
"C. Van Heyningen and I. D. Watson"
"A. Z. van de Wiel and D. W. de Lange"
end
generate surname = name
replace surname = usubstr(surname,1,ustrpos(surname+" and "," and ")-1)
list, clean noobs
replace surname = usubstr(surname,ustrrpos(surname,". ")+1,.)
list, clean noobs