[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