[R-br] Separar o segundo nome

Éder Comunello comunello.eder em gmail.com
Quarta Maio 18 09:01:38 BRT 2016


Wagner, bom dia!

Tentei melhorar um pouco o script, tendo em mente os comentários do colega
Cesar Rabak. Considerei apenas os sobrenomes de língua portuguesa, mas com
um pouco de trabalho dá pra estender para outras línguas ("Alexander
*von *Humboldt",
"Johannes Diderik *van der* Waals", "Giuseppe *Della *Rosa", etc.)

### <code r>
names <- c("Antônio João dos Santos", "Antônio Souza Brás Filho",
     "Bento Munhoz Rocha Souza", "Carlos Henrique Souza Sobrinho Neto",
     "Damasceno de Souza", "Eustácio da Silva Lima", "Fábio Pereira",
     "Gustavo de Araújo Junior"); names

composite <- c("Junior", "Júnior", "Filho", "Neto", "Sobrinho")
composite <- paste(composite, collapse="|")

### Marcando nomes compostos com uso de hífen
names2 <- names
names2 <- gsub(paste0(" (", composite, ")"), "-\\1", names2)
names2 <- gsub(" (d.?.) ", " \\1-", names2)
names2

split  <- strsplit(names2, ' ')
terms <- unlist(lapply(split, length)); terms
n     <- length(terms)

sapply(1:n, function(x) split[[x]][1]) # Primeiro
sapply(1:n, function(x) split[[x]][terms[x]]) # Último
sapply(1:n, function(x) paste(split[[x]][-c(1,terms[x])], collapse=" ")) #
Intermediários
sapply(1:n, function(x) (split[[x]][-c(1,terms[x])])[1]) # Segundo nome...

### Removendo os hífens
split2 <- lapply(split,  function(x) gsub("-", " ", x))
sapply(1:n, function(x) split2[[x]][terms[x]]) # Último

### Removendo c("da", "de", "dos")
split3 <- lapply(split2, function(x) gsub("^d.?. ", "", x))
sapply(1:n, function(x) split3[[x]][terms[x]]) # Último
### </code>

​
================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160518/8c100f63/attachment.html>


Mais detalhes sobre a lista de discussão R-br