[R-br] Separa primeiro e último nome

Fátima Lima Paula fatima.lima.paula em gmail.com
Sexta Outubro 26 20:15:01 BRST 2012


Caro Walmes,
Executei seu passo a passo. O problema é que quando crio o x1 encontro um
problema:
meu data frame tem 2738 linhas e algumas colunas. Cada linha é um indivíduo
cujo nome quero separar. Peguei só a coluna do nome e criei o x1, mas ele
ficou com 3 linhas e 2378 colunas.
Exemplo:
       [,1]                             [,2]
[1,] Maria                          José
[2,] José da                      Silva
[3,] Silva                           Cardoso

O que eu quero no final é que o x1 fique assim:
     Nome1    Nome2      Nome3
1    Maria      José da     Silva
2    José      da Silva     Cardoso
para eu poder devolver para o data frame e ficar assim:

    Nome                         Nome1    Nome2      Nome3
1   Maria José da Silva     Maria      José da     Silva
2  José da Silva Cardoso  José      da Silva     Cardoso

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/~walmes
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20121026/ae1ea39c/attachment.html>


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