[R-br] Separa primeiro e último nome
Fátima Lima Paula
fatima.lima.paula em gmail.com
Sábado Outubro 27 09:11:22 BRST 2012
Vou dar um exemplo fictício, ok? Tenho um data frame chamado tese com as
seguintes variáveis: nome, data da internação, data da alta, idade. O nome
vem completo. Quero fazer um linkage para verificar quem reinternou. Para
isso, pelo que eu entendi, para usar o RecordLinkage vou precisar um data
frame com colunas com o primeiro nome, nome do meio e último nome. Vamos
ver um exemplo:
nome
data da internação
data da alta
idade
Maria José Pereira
20080506
20080606
79
Rodrigo de Souza Matos
20080103
20080109
80
Márcia da Silva
20080304
20090305
68
Preciso que meu data frame fique assim:
nome
data da internação
data da alta
idade
nome1
nome2
nome3
Maria José Pereira
20080506
20080606
79
Maria
José
Pereira
Rodrigo de Souza Matos
20080103
20080109
80
Rodrigo
de Souza
Matos
Márcia da Silva
20080304
20090305
68
Márcia
da
Teixeira
O que eu fiz foi:
library(stringr)
separado=strsplit(as.character(teste$nome),split=" ")
fa=sapply(separado,
function(i){
n=length(i)
c(i[1],paste(i[2:(n-1)],collapse=" "), i[n])
})
O aspecto do "fa" ficou assim:
fa[,1:3]
[,1] [,2] [,3]
[1,] "Maria" "Rodrigo" "Márcia"
[2,] "José" "de Souza" "da"
[3,] "Pereira" "Matos" "Silva"
Como você vê, ele retorna uma matriz cujas colunas são as linhas do outro
data frame e as linhas são as colunas que eu queria criar no data frame.
Espero que tenha conseguido ser clara.
Obrigada.
Fátima
Em 27 de outubro de 2012 00:58, Lucas Cusinato <lucasbcr em gmail.com>escreveu:
> Fátima,
>
> Com expressões regulares fica mais simples (roubei os mesmos nomes do CMR
> do Walmes)
>
> nomes <- c("Antonio Teixeira Batista",
> "Suellen Cristina Albuquerque",
> "Paulo Matias dos Santos")
>
> expressao <- '^([^ ]+).* ([^ ]+)$'
>
> PrimeiroNome <- gsub(expressao, '\\1', nomes)
> UltimoNome <- gsub(expressao, '\\2', nomes)
>
> (Nomes <- data.frame(completo = nomes, primeiro = PrimeiroNome, ultimo =
> UltimoNome))
>
> Testa aí e vê se isso resolve.
> Em 27 de outubro de 2012 00:01, Alisson Lucrecio <alissonluc em yahoo.com.br>escreveu:
>
> Olá Fátima, vc pode enviar um CRM? que te ajudo.
>> Att
>> Alisson Lucrécio da Costa
>> ------------------------------
>> *From:* Fátima Lima Paula <fatima.lima.paula em gmail.com>
>> *To:* r-br em listas.c3sl.ufpr.br
>> *Sent:* Friday, October 26, 2012 5:29 PM
>> *Subject:* Re: [R-br] Separa primeiro e último nome
>>
>> Caro Walmes.
>> Na verdade esqueci de dizer que quero criar colunas no meu data frame com
>> primeiro nome, nome do meio e último nome para depois usar o RecordLinkage.
>>
>> Agradeço muito o passo a passo para separar, vou testar. Mas, como faço
>> para criar automaticamente as colunas respectivas. Será que me fiz entender?
>> Obrigada.
>> Fátima
>>
>> Em 26 de outubro de 2012 17:15, Walmes Zeviani <walmeszeviani em gmail.com>escreveu:
>>
>> Tem sim, tudo depende do padrão apresentado. Todos os nomes são compostos
>> por 3 partes? Bem, á pra usar a função strsplit() e quebrar no espaço em
>> branco, o resultado é uma lista. Um probleminha surge com nomes que tem
>> "da", "do", "das", "dos", "de" (da Silva, dos Santos, de Oliveira, do
>> Nascimento, das Flores), mas pode ser revolvido. Veja
>>
>> nomes <- c("Antonio Teixeira Batista",
>> "Suellen Cristina Albuquerque",
>> "Paulo Matias dos Santos")
>>
>> # separa pelo espaço
>> x1 <- strsplit(nomes, split=" ")
>> x1
>>
>> # junta o meio
>> sapply(x1,
>> function(i){
>> n <- length(i)
>> c(i[1], paste(i[2:(n-1)], collapse=" "), i[n])
>> })
>>
>> À disposição.
>> Walmes.
>>
>> ==========================================================================
>> Walmes Marques Zeviani
>> LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
>> Departamento de Estatística - Universidade Federal do Paraná
>> fone: (+55) 41 3361 3573
>> VoIP: (3361 3600) 1053 1173
>> e-mail: walmes em ufpr.br
>> skype: walmeszeviani
>> twitter: @walmeszeviani
>> homepage: http://www.leg.ufpr.br/%7Ewalmes
>>
>> linux user number: 531218
>> ==========================================================================
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20121027/0a828efd/attachment.html>
Mais detalhes sobre a lista de discussão R-br