<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">Prezados, tenho um banco de dados como o abaixo. </div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">
<br></div><div class="gmail_default"><div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">nome=c("RICARDO CUNHA DA SILVA FILHO","MARIA DE ANDRADE","TEREZA PEREIRA FILHA",</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1"> "PEDRO ALVARENGA JR","JOSE BRAGANÇA ALMEIDA JR", "GERMANO LIMA BARROS")</font></div><div class="gmail_default">
<font face="arial, helvetica, sans-serif" color="#000000" size="1">idade=c(68,67,89,78,65,67)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">ano=c(1944,1945,1923,1934,1947,1945)</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">dataint=c(20121004,20120907,20120703,20120301,20120805,20121209)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">banco1=cbind(nome,sobrenome,idade,ano,dataint)</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">banco1=data.frame(banco1)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" color="#000000" size="1">banco1</font></div>
<div style="color:rgb(116,27,71);font-family:verdana,sans-serif"><br></div></div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)"><br></div><div class="gmail_default"><font face="verdana, sans-serif" style="color:rgb(116,27,71)">Separei os nomes em nome1 (primeiro nome), nome2 (nome do meio) e </font><font size="1" face="arial, helvetica, sans-serif" color="#000000">nome3 (último nome), dessa forma:</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"><br></font></div><div class="gmail_default"><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">nome=banco1$nome</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">nome=gsub(" D(A|E|O)S? ", " ", nome)</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">separado=strsplit(as.character(nome), split=" ")</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">head(separado)</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">fa=sapply(separado,</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> function(i){</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> n=length(i)</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> if(n>2) return(c(i[1], paste(i[2:(n-1)],collapse=" "), i[n]))</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> if(n==2) return(c(i[1], NA, i[n]))</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> if(n==1) return(c(i[1], NA, NA))</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000"> })</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">nomenovo=t(fa)</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">head(nomenovo)</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">is.data.frame(nomenovo)</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">nomenovo=as.data.frame(nomenovo)</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">dim(nomenovo)</font></div><div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">colnames(nomenovo)=c("nome1","nome2","nome3")</font></div>
<div class="gmail_default"><font size="1" face="arial, helvetica, sans-serif" color="#000000">banco1=cbind(banco1,nomenovo)</font></div><div style="color:rgb(116,27,71);font-family:verdana,sans-serif"><br></div></div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">
Depois, vi que existem os apêndices dos nomes (Filho, Filha, Jr etc)</div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">Preciso separar os apêndices em uma coluna diferente (nome4).</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">Pensei em criar uma coluna 4 em que tivesse os apêndices do nome3 e no restante viesse NA. Não sei fazer isso.</div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">
Ainda assim, dessa forma não sei que solução dar para a coluna 3. Pois essa, deveria ter os apêndices substituídos pelos últimos sobrenomes.</div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">
Minha ideia é:</div><div class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(116,27,71)">1)separar o nome2 em 3 de novo assim:</div><div><br></div><div><div class="gmail_default"><span style="color:rgb(116,27,71);font-family:verdana,sans-serif"></span><font face="arial, helvetica, sans-serif" size="1" color="#000000">nome=banco1$nome2</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">nome=gsub(" D(A|E|O)S? ", " ", nome)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">separado=strsplit(as.character(nome), split=" ")</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">head(separado)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">fa=sapply(separado,</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> function(i){</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> n=length(i)</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> if(n>2) return(c(i[1], paste(i[2:(n-1)],collapse=" "), i[n]))</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> if(n==2) return(c(i[1], NA, i[n]))</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> if(n==1) return(c(i[1], NA, NA))</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000"> })</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">nomenovo=t(fa)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">head(nomenovo)</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">is.data.frame(nomenovo)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">nomenovo=as.data.frame(nomenovo)</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">dim(nomenovo)</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">colnames(nomenovo)=c("nome6","nome7","nome8")</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif" size="1" color="#000000">banco1=cbind(banco1,nomenovo)</font></div><div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">
2)Onde for FILHO, JR etc no nome 3, substituir pelo nome8 quando ele não for NA. Pois quando ele é NA, tem que substituir pelo nome6</div><div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">
Não sei se tem como fazer isso.</div><div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">São muitas condições: se for FILHO em nome3 e NA em nome8, substituir por nome6, se for FILHO em nome3 e != de NA em nome8 substituir por nome8. E o pior, tem que fazer isso para FILHO, FILHA, JR etc</div>
<div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">Alguém sabe fazer isso ou tem outra solução para o problema?</div><div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">
Obrigada</div><div style="font-family:verdana,sans-serif;color:rgb(116,27,71)" class="gmail_default">Fátima</div><br></div>-- <br><div dir="ltr"><div><span style="color:rgb(103,78,167);font-family:'comic sans ms',sans-serif">"Minha felicidade depende da qualidade dos meus pensamentos"</span><br>
</div></div>
</div>