
Boa noite, possuo um banco de dados com 3 variáveis: 1- Nome da Pessoa 2- Data de nascimento 3- Nome completo da mãe Uma melhor visão do banco pode ser dada assim: NOM_PESSOA DTA_NASC_PESSOA NOM_COMPLETO_MAE_PESSOA 1 *A*NTONIO *D*O *N*ASCIMENTO VIEIRA 17081968 GENESIA *M*ARIA *D*O NASCIMENTO 2 ANTONIA* M*ARGARETE *R*OCHA *D*E ARAUJO 05091975 MARIA *D*A *A*SSUNCAO ROCHA 3 JOAO *P*EDRO *A*RAUJO VIEIRA 06031998 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO 4 ERICA *D*E *A*RAUJO *V*IEIRA 03112001 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO o que eu gostaria de fazer é criar uma quarta variável com a seguinte característica: PrimeiroNomeÚltimoNome*IniciaisNomeDoMeio* DataNascPrimeiroNomeMaeUltimoNomeMae*IniciaisNomeDoMeioMa*e para poder identificar cada indivíduo, já que no meu banco real eu possuo muitos homônimos. Para exemplificar, utilizando os nomes acima fornecidos, eu gostaria de criar algo do tipo: 1 ANTONIOVIEIRA*DN*17081968GENESIANASCIMENTO*MD* 2 ANTONIAARAUJO*MR*D05091975MARIAROCHA*DA* 3 JOAOVIEIRA*PA*06031998ANTONIAARAUJO*MRD* 4 ERICAVIEIRA*DA*03112001ANTONIAARAUJO*MRD* Desde já agradeço. Estevam C.M. Teixeira PS: Coloquei a parte relacionada aos nomes do meio para tentar facilitar a visualização e compreensão do que eu gostaria de fazer

nao da' pra ser um one-liner... mas algo como o seguinte (assumindo que os seus dados estejam num data.frame chamado myDat): p1 = gsub('^(\\w+)\\s+.*\\s+(\\w+)$', '\\1\\2', myDat$NOME_PESSOA) p2 = paste('DN', myDat$DTA_NASC_PESSOA, sep='') p3a = gsub('^(\\w+)\\s.*\\s(\\w+)$', '\\1\\2', myDat$NOME_COMPLETO_MAE_PESSOA) f = function(nm){ paste(unlist(lapply(strsplit(gsub(gsub('^(\\w+)\\s.*\\s(\\w+)$', '\\1 | \\2', nm), '', nm), ' '), substr, 1, 1)), collapse='') } p3b = sapply(myDat$NOME_COMPLETO_MAE_PESSOA, f) final = paste(p1, p2, p3a, p3b, collapse='') b ps: desculpas pela minha funcao f()... depois eu penso em algo elegante... isso se o henrique nao chegar humilhando... pps: fica pra vc a tarefa de testar o codigo

Tente assim: library(gsubfn) foo <- function(x, ...) { sprintf(gsub("^(\\w+)\\s+.*\\s+(\\w+$)", "\\1\\2%s", x), sapply(strapply(d$NOM_PESSOA, '\\s+(.)'), function(.x)paste(head(.x, n = -1), collapse = ''))) } sprintf('%s%s%s', foo(d$NOM_PESSOA), d$DTA_NASC_PESSOA, foo(d$NOM_COMPLETO_MAE_PESSOA)) 2012/3/14 Estevam Caixeta <estevamcaixeta@gmail.com>
Boa noite, possuo um banco de dados com 3 variáveis: 1- Nome da Pessoa 2- Data de nascimento 3- Nome completo da mãe
Uma melhor visão do banco pode ser dada assim:
NOM_PESSOA DTA_NASC_PESSOA NOM_COMPLETO_MAE_PESSOA 1 *A*NTONIO *D*O *N*ASCIMENTO VIEIRA 17081968 GENESIA *M*ARIA *D*O NASCIMENTO 2 ANTONIA* M*ARGARETE *R*OCHA *D*E ARAUJO 05091975 MARIA *D*A *A*SSUNCAO ROCHA 3 JOAO *P*EDRO *A*RAUJO VIEIRA 06031998 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO 4 ERICA *D*E *A*RAUJO *V*IEIRA 03112001 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO
o que eu gostaria de fazer é criar uma quarta variável com a seguinte característica: PrimeiroNomeÚltimoNome*IniciaisNomeDoMeio* DataNascPrimeiroNomeMaeUltimoNomeMae*IniciaisNomeDoMeioMa*e para poder identificar cada indivíduo, já que no meu banco real eu possuo muitos homônimos. Para exemplificar, utilizando os nomes acima fornecidos, eu gostaria de criar algo do tipo:
1 ANTONIOVIEIRA*DN*17081968GENESIANASCIMENTO*MD* 2 ANTONIAARAUJO*MR*D05091975MARIAROCHA*DA* 3 JOAOVIEIRA*PA*06031998ANTONIAARAUJO*MRD* 4 ERICAVIEIRA*DA*03112001ANTONIAARAUJO*MRD*
Desde já agradeço.
Estevam C.M. Teixeira
PS: Coloquei a parte relacionada aos nomes do meio para tentar facilitar a visualização e compreensão do que eu gostaria de fazer
_______________________________________________ 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.
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O

*Aproveitando o comentário do Benilton, "**isso se o henrique nao chegar humilhando" ;)* * * *de que forma Henrique você adquiriu este know-how? O que você recomenda para leitura e apriomoramento?* * * * * * *Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907 Em 15 de março de 2012 00:16, Henrique Dallazuanna <wwwhsd@gmail.com>escreveu:
Tente assim:
library(gsubfn)
foo <- function(x, ...) { sprintf(gsub("^(\\w+)\\s+.*\\s+(\\w+$)", "\\1\\2%s", x), sapply(strapply(d$NOM_PESSOA, '\\s+(.)'), function(.x)paste(head(.x, n = -1), collapse = ''))) }
sprintf('%s%s%s', foo(d$NOM_PESSOA), d$DTA_NASC_PESSOA, foo(d$NOM_COMPLETO_MAE_PESSOA))
2012/3/14 Estevam Caixeta <estevamcaixeta@gmail.com>
Boa noite, possuo um banco de dados com 3 variáveis: 1- Nome da Pessoa 2- Data de nascimento 3- Nome completo da mãe
Uma melhor visão do banco pode ser dada assim:
NOM_PESSOA DTA_NASC_PESSOA NOM_COMPLETO_MAE_PESSOA 1 *A*NTONIO *D*O *N*ASCIMENTO VIEIRA 17081968 GENESIA *M*ARIA *D*O NASCIMENTO 2 ANTONIA* M*ARGARETE *R*OCHA *D*E ARAUJO 05091975 MARIA *D*A *A*SSUNCAO ROCHA 3 JOAO *P*EDRO *A*RAUJO VIEIRA 06031998 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO 4 ERICA *D*E *A*RAUJO *V*IEIRA 03112001 ANTONIA *M*ARGARETE *R*OCHA *D*E ARAUJO
o que eu gostaria de fazer é criar uma quarta variável com a seguinte característica: PrimeiroNomeÚltimoNome*IniciaisNomeDoMeio* DataNascPrimeiroNomeMaeUltimoNomeMae*IniciaisNomeDoMeioMa*e para poder identificar cada indivíduo, já que no meu banco real eu possuo muitos homônimos. Para exemplificar, utilizando os nomes acima fornecidos, eu gostaria de criar algo do tipo:
1 ANTONIOVIEIRA*DN*17081968GENESIANASCIMENTO*MD* 2 ANTONIAARAUJO*MR*D05091975MARIAROCHA*DA* 3 JOAOVIEIRA*PA*06031998ANTONIAARAUJO*MRD* 4 ERICAVIEIRA*DA*03112001ANTONIAARAUJO*MRD*
Desde já agradeço.
Estevam C.M. Teixeira
PS: Coloquei a parte relacionada aos nomes do meio para tentar facilitar a visualização e compreensão do que eu gostaria de fazer
_______________________________________________ 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.
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O
_______________________________________________ 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 (4)
-
Benilton Carvalho
-
Estevam Caixeta
-
Henrique Dallazuanna
-
Leandro Marino