Separando nomes e retirando de da dos das

Prezados, há um tempo Walmes me passou um script para separar nomes. Como vcs podem verificar o nome do meio ficou com um problema (Pedro Maia), mas eu só ia utilizar o primeiro e último nome, por isso não me importei. Mas agora preciso de tudo. Assim, eu gostaria de saber se alguém poderia me ajudar desta forma: acertando o problema que retornou para quem só tem dois nomes e retirando os "de", "das", "da", etc dos nomes. Não sei programar e nem imagino como se faz para acrescentar isso no script. Você poderia me ajudar? nome=c("Teresa dos Santos","Paulo da Silva","Denis Henrique de Paula","Pedro dos Santos","Pedro Maia", "Maria do Carmo") idade=c("80","89","78","78","78","85") dataint=c("26","20","25","25","25","20") dados=data.frame(nome,idade,dataint) dados Ulitizei seu script assim: nome=dados$nome separado=strsplit(as.character(nome),split=" ") fa=sapply(separado, function(i){ n=length(i) c(i[1],paste(i[2:(n-1)],collapse=" "), i[n]) }) nomenovo=t(fa) nomenovo=as.data.frame(nomenovo) dim(nomenovo) colnames(nomenovo)=c("nome1","nome2","nome3") dados1=cbind(dados,nomenovo) head(dados1) Obrigada Fátima

Não ficou claro que tipo de resultado você precisa? No final o nome tem que repartir em 3 partes: primeiro, meio, e ultimo. O meio pode ser qualquer coisa, vai ser em branco se tiver apenas 2 nomes, algo assim Benilton | | Carvalho Walmes | Marques | Zeviani Paulo | Justiniano Ribeiro | Júnior E o que fazer com os da, das, do, dos, de? À 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@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Não. Os nomes ficarão primeiro meio e último. O do meio fica NA se não tiver nada e fica o resto que sobrou do primeiro e do último. Preciso que desapareçam os do da de dos Exemplo. No meu script queria que ficasse. nome1 nome2 nome3 Teresa NA Santos Paulo NA Silva Denis Henrique Paula etc etc Em 9 de janeiro de 2013 11:50, Walmes Zeviani <walmeszeviani@gmail.com>escreveu:
Não ficou claro que tipo de resultado você precisa? No final o nome tem que repartir em 3 partes: primeiro, meio, e ultimo. O meio pode ser qualquer coisa, vai ser em branco se tiver apenas 2 nomes, algo assim
Benilton | | Carvalho Walmes | Marques | Zeviani Paulo | Justiniano Ribeiro | Júnior
E o que fazer com os da, das, do, dos, de?
À 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@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@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.

Isso deve funcionar por enquanto nome=dados$nome # remover da,das,do,dos,de nome=gsub(" d(a|e|o)s? ", " ", nome) separado=strsplit(as.character(nome), split=" ") fa=sapply(separado, function(i){ n=length(i) if(n>2) return(c(i[1], paste(i[2:(n-1)],collapse=" "), i[n])) if(n==2) return(c(i[1], NA, 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@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Muito obrigada, Walmes. Vou tentar no banco. No exemplo funcionou perfeitamente. Abs Fátima Em 9 de janeiro de 2013 13:43, Walmes Zeviani <walmeszeviani@gmail.com>escreveu:
Isso deve funcionar por enquanto
nome=dados$nome # remover da,das,do,dos,de nome=gsub(" d(a|e|o)s? ", " ", nome) separado=strsplit(as.character(nome), split=" ") fa=sapply(separado, function(i){ n=length(i) if(n>2) return(c(i[1], paste(i[2:(n-1)],collapse=" "), i[n])) if(n==2) return(c(i[1], NA, 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@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@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.
participantes (2)
-
Fátima Lima Paula
-
Walmes Zeviani