
Prezados Estou tentando concatenar uma variável com a seguinte condição: Se ela tiver tamanho 1, gostaria de concatenar 000, se ela tiver tamanho 2 concateno 00 e se ela tiver tamanho 3 concateno 0. Eu pensei na seguinte função: dados$len <- nchar(dados$var) func <- function(){ if (dados$len == 1){ dados$var1 = paste("000", dados$var, colapse="") } else if (dados$len == 2){ dados$var1 = paste("00", dados$var, colapse="")} else if (dados$len == 3){ dados$var1 = paste("0", dados$var, colapse="")} } func() Mas está dando a seguinte mensagem de erro: Mensagens de aviso perdidas: In if (dados$len == 1) { : a condição tem comprimento > 1 e somente o primeiro elemento será usado Vi em outro tópico que o Benilton sugere usar with, mas não sei como fazer. Abraços -- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro

Se a variável for inteiro sprintf("%04d", c(1,3,30,50,900)) On 07/22/2013 08:57 AM, Sérgio Henrique almeida da silva ju wrote:
Prezados
Estou tentando concatenar uma variável com a seguinte condição: Se ela tiver tamanho 1, gostaria de concatenar 000, se ela tiver tamanho 2 concateno 00 e se ela tiver tamanho 3 concateno 0.
Eu pensei na seguinte função:
dados$len <- nchar(dados$var) func <- function(){ if (dados$len == 1){ dados$var1 = paste("000", dados$var, colapse="") } else if (dados$len == 2){ dados$var1 = paste("00", dados$var, colapse="")} else if (dados$len == 3){ dados$var1 = paste("0", dados$var, colapse="")} } func()
Mas está dando a seguinte mensagem de erro:
Mensagens de aviso perdidas: In if (dados$len == 1) { : a condição tem comprimento > 1 e somente o primeiro elemento será usado
Vi em outro tópico que o Benilton sugere usar with, mas não sei como fazer.
Abraços
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.

Não entendi Elias! Em 22 de julho de 2013 09:00, Elias Krainski <eliaskrainski@yahoo.com.br>escreveu:
Se a variável for inteiro sprintf("%04d", c(1,3,30,50,900))
On 07/22/2013 08:57 AM, Sérgio Henrique almeida da silva ju wrote:
Prezados
Estou tentando concatenar uma variável com a seguinte condição: Se ela tiver tamanho 1, gostaria de concatenar 000, se ela tiver tamanho 2 concateno 00 e se ela tiver tamanho 3 concateno 0.
Eu pensei na seguinte função:
dados$len <- nchar(dados$var) func <- function(){ if (dados$len == 1){ dados$var1 = paste("000", dados$var, colapse="") } else if (dados$len == 2){ dados$var1 = paste("00", dados$var, colapse="")} else if (dados$len == 3){ dados$var1 = paste("0", dados$var, colapse="")} } func()
Mas está dando a seguinte mensagem de erro:
Mensagens de aviso perdidas: In if (dados$len == 1) { : a condição tem comprimento > 1 e somente o primeiro elemento será usado
Vi em outro tópico que o Benilton sugere usar with, mas não sei como fazer.
Abraços
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ R-br mailing listR-br@listas.c3sl.ufpr.brhttps://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@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.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro

sprintf(), usando '%04d', faz o que vc quer para inteiros. Se dados$var é 'character', use aaa <- sapply(3:0, function(n) paste(rep(0, n), collapse='')) dados$var1 <- paste(aaa[nchar(dados$var)], dados$var, collapse='')

Elias Não funcionou! O comando criou o resultado abaixo, tudo dentro da mesma variável. 000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 Em 22 de julho de 2013 09:22, Elias Krainski <eliaskrainski@yahoo.com.br>escreveu:
if (dados$len == 1){
A sua solucao nao funciona porque essa condicao tem comprimento igual ao tamanho de dados$len, mas if() precisa de TRUE ou FALSE (tamanho 1).
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro

Sergio, da um dput(head(dados$var)) e nos cola o que aparecer na tela 2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Elias
Não funcionou!
O comando criou o resultado abaixo, tudo dentro da mesma variável.
000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
Em 22 de julho de 2013 09:22, Elias Krainski <eliaskrainski@yahoo.com.br>escreveu:
if (dados$len == 1){
A sua solucao nao funciona porque essa condicao tem comprimento igual ao tamanho de dados$len, mas if() precisa de TRUE ou FALSE (tamanho 1).
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.

dput(head(dados$Filial)) c(1L, 1L, 1L, 1L, 1L, 1L)
Exemplo a variável pode ter os seguintes valores: 0, 1, 01, 44, 456, 0001 e eu quero que ela fique assim: 0000, 0001, 0001, 0044, 0456, 0001. Abraços Em 22 de julho de 2013 09:39, Rodrigo Coster <rcoster@gmail.com> escreveu:
Sergio,
da um dput(head(dados$var)) e nos cola o que aparecer na tela
2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Elias
Não funcionou!
O comando criou o resultado abaixo, tudo dentro da mesma variável.
000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
Em 22 de julho de 2013 09:22, Elias Krainski <eliaskrainski@yahoo.com.br>escreveu:
if (dados$len == 1){
A sua solucao nao funciona porque essa condicao tem comprimento igual ao tamanho de dados$len, mas if() precisa de TRUE ou FALSE (tamanho 1).
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.
_______________________________________________ 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.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro

Entao o que tu precisa fazer é dados$Filial <- sprintf('%04d', dados$Filial) 2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
dput(head(dados$Filial)) c(1L, 1L, 1L, 1L, 1L, 1L)
Exemplo a variável pode ter os seguintes valores: 0, 1, 01, 44, 456, 0001 e eu quero que ela fique assim: 0000, 0001, 0001, 0044, 0456, 0001.
Abraços
Em 22 de julho de 2013 09:39, Rodrigo Coster <rcoster@gmail.com> escreveu:
Sergio,
da um dput(head(dados$var)) e nos cola o que aparecer na tela
2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Elias
Não funcionou!
O comando criou o resultado abaixo, tudo dentro da mesma variável.
000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
Em 22 de julho de 2013 09:22, Elias Krainski <eliaskrainski@yahoo.com.br
escreveu:
if (dados$len == 1){
A sua solucao nao funciona porque essa condicao tem comprimento igual ao tamanho de dados$len, mas if() precisa de TRUE ou FALSE (tamanho 1).
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.
_______________________________________________ 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.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.

Funcionou amigo! Obrigado. Em 22 de julho de 2013 09:48, Rodrigo Coster <rcoster@gmail.com> escreveu:
Entao o que tu precisa fazer é dados$Filial <- sprintf('%04d', dados$Filial)
2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
dput(head(dados$Filial)) c(1L, 1L, 1L, 1L, 1L, 1L)
Exemplo a variável pode ter os seguintes valores: 0, 1, 01, 44, 456, 0001 e eu quero que ela fique assim: 0000, 0001, 0001, 0044, 0456, 0001.
Abraços
Em 22 de julho de 2013 09:39, Rodrigo Coster <rcoster@gmail.com>escreveu:
Sergio,
da um dput(head(dados$var)) e nos cola o que aparecer na tela
2013/7/22 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com
Elias
Não funcionou!
O comando criou o resultado abaixo, tudo dentro da mesma variável.
000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
Em 22 de julho de 2013 09:22, Elias Krainski < eliaskrainski@yahoo.com.br> escreveu:
if (dados$len == 1){
A sua solucao nao funciona porque essa condicao tem comprimento igual ao tamanho de dados$len, mas if() precisa de TRUE ou FALSE (tamanho 1).
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.
_______________________________________________ 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.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ 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.
_______________________________________________ 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.
-- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 68463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
participantes (3)
-
Elias Krainski
-
Rodrigo Coster
-
Sérgio Henrique almeida da silva ju