
Olá alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável: A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante. Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis exemplo Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360 e assim por diante. Como faço? x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado -- 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) 94429486/78101651 id: 123*20942

1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida... tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330*A340 *A360'), y=c('*A340*A360', '*A360', '*A330*A340*A360', ' *A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE) f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) } f('x', tmp) f('y', tmp) b 2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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.

Oi Benilton Obrigado pela resposta! Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade... Sim, quando falo 2a linha é o 2o caractere da string. Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando: IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4). Em 11 de abril de 2012 14:02, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330*A340 *A360'), y=c('*A340*A360', '*A360', '*A330*A340*A360', ' *A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942

o codigo q enviei deve fazer algo proximo do q vc quer... so' copiar/colar e verificar os resultados... 2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da
string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330*A340 *A360'), y=c('*A340*A360', '*A360', '*A330*A340*A360', ' *A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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.

Oi Benilton Dá o seguinte erro dados$x2<- f('x', dados) Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s) Em 11 de abril de 2012 14:48, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so' copiar/colar e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da
string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330 *A340*A360'), y=c('*A340*A360', '*A360', '*A330*A340*A360', '*A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942

entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados... se o mesmo problema acontecer com: f('x', dados[1:10,]) entao cole aqui o resultado de: dput(dados[1:10,]) se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos. benilton 2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so' copiar/colar
e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da
string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330 *A340*A360'), y=c('*A340*A360', '*A360', '*A330*A340 *A360', '*A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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.

Oi Benilton Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro. A variável tem que ser um vetor? Em 11 de abril de 2012 15:05, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so'
copiar/colar e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da
string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330 *A340*A360'), y=c('*A340*A360', '*A360', '*A330*A340 *A360', '*A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Olá
alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em uma outra variável:
A variável x1 mostra que o A360 inicia-se na segunda linha da variável X e assim por diante.
Só que agora eu queria criar uma outra variável x2 e y2 que extrai o valor de A360 das variáveis
exemplo
Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª me dando dessa forma o valor A360 Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a 10ª me dando dessa forma o valor A360
e assim por diante.
Como faço?
x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 Obrigado
-- 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942

o q vc tentou das recomendacoes do meu ultimo email e quais os resultados? 2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro.
A variável tem que ser um vetor?
Em 11 de abril de 2012 15:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so'
copiar/colar e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da
string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) assumindo q se vc tiver 0, vc nao quer nada na saida...
tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330 *A340*A360'), y=c('*A340*A360', '*A360', '*A330*A340 *A360', '*A340', '*A330'), x1=c(2, 0, 0, 7, 12), y1=c(7, 2, 12, 0, 0), stringsAsFactors=FALSE)
f = function(v, dat, v1=paste(v, 1, sep='')){ n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) substr(dat[[v]], dat[[v1]], n) }
f('x', tmp) f('y', tmp)
b
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
> Olá > > alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e > y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em > uma outra variável: > > A variável x1 mostra que o A360 inicia-se na segunda linha da > variável X e assim por diante. > > Só que agora eu queria criar uma outra variável x2 e y2 que extrai o > valor de A360 das variáveis > > exemplo > > Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a 4ª > me dando dessa forma o valor A360 > Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a > 10ª me dando dessa forma o valor A360 > > e assim por diante. > > Como faço? > > x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 > *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 0 > Obrigado > > -- > 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) 94429486/78101651 id: 123*20942 > > > > _______________________________________________ > 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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.

Oi Dá o mesmo resultado Quando executo o comando: dput(dados[1:10,]) Dá um resultado enorme. Em 11 de abril de 2012 20:05, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
o q vc tentou das recomendacoes do meu ultimo email e quais os resultados?
2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro.
A variável tem que ser um vetor?
Em 11 de abril de 2012 15:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so'
copiar/colar e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Oi Benilton
Obrigado pela resposta!
Tentei colocar o exemplo mais reproduzível o possível, mas o banco que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade...
Sim, quando falo 2a linha é o 2o caractere da string.
Quando tem o 0 significa que não existe o valor (A360) na linha da variável, portanto eu busco valor a partir da posição do caractere indicado pela variável. No SPSS eu uso o seguinte comando:
IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4).
Em 11 de abril de 2012 14:02, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da > string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) > assumindo q se vc tiver 0, vc nao quer nada na saida... > > tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', '*A330 > *A340*A360'), > y=c('*A340*A360', '*A360', '*A330*A340 > *A360', '*A340', '*A330'), > x1=c(2, 0, 0, 7, 12), > y1=c(7, 2, 12, 0, 0), > stringsAsFactors=FALSE) > > f = function(v, dat, v1=paste(v, 1, sep='')){ > n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) > substr(dat[[v]], dat[[v1]], n) > } > > f('x', tmp) > f('y', tmp) > > b > > > > > 2012/4/11 Sérgio Henrique almeida da silva ju < > sergio.edfisica@gmail.com> > >> Olá >> >> alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e >> y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em >> uma outra variável: >> >> A variável x1 mostra que o A360 inicia-se na segunda linha da >> variável X e assim por diante. >> >> Só que agora eu queria criar uma outra variável x2 e y2 que extrai >> o valor de A360 das variáveis >> >> exemplo >> >> Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a >> 4ª me dando dessa forma o valor A360 >> Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a >> 10ª me dando dessa forma o valor A360 >> >> e assim por diante. >> >> Como faço? >> >> x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 >> *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 >> 0 >> Obrigado >> >> -- >> 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) 94429486/78101651 id: 123*20942 >> >> >> >> _______________________________________________ >> 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942

Bom, sem saber como sao seus dados, nao ha' muito o que fazer... minhas recomendacoes continuam as mesmas de 2 emails atras... eh possivel q os nomes das variaveis nao sejam como vc descreveu inicialmente (x e x1, y e y1)... e, dada a funcao que te passei, vc soh precisaria dar o nome das variaveis apropriadamente: res0 = f('nome', dados, 'nome1') mas, novamente, nao posso fazer nada sem saber como de fato sao seus dados... e seguir as recomendacoes do guia de postagem e' sempre a melhor sugestao. b 2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi
Dá o mesmo resultado
Quando executo o comando:
dput(dados[1:10,])
Dá um resultado enorme.
Em 11 de abril de 2012 20:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o q vc tentou das recomendacoes do meu ultimo email e quais os resultados?
2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi Benilton
Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro.
A variável tem que ser um vetor?
Em 11 de abril de 2012 15:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so'
copiar/colar e verificar os resultados...
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
> Oi Benilton > > Obrigado pela resposta! > > Tentei colocar o exemplo mais reproduzível o possível, mas o banco > que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade... > > Sim, quando falo 2a linha é o 2o caractere da string. > > Quando tem o 0 significa que não existe o valor (A360) na linha da > variável, portanto eu busco valor a partir da posição do caractere indicado > pela variável. > No SPSS eu uso o seguinte comando: > > IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). > IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). > IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). > IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). > IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). > IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4). > > Em 11 de abril de 2012 14:02, Benilton Carvalho < > beniltoncarvalho@gmail.com> escreveu: > > 1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere da >> string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) >> assumindo q se vc tiver 0, vc nao quer nada na saida... >> >> tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', >> '*A330*A340*A360'), >> y=c('*A340*A360', '*A360', '*A330*A340 >> *A360', '*A340', '*A330'), >> x1=c(2, 0, 0, 7, 12), >> y1=c(7, 2, 12, 0, 0), >> stringsAsFactors=FALSE) >> >> f = function(v, dat, v1=paste(v, 1, sep='')){ >> n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) >> substr(dat[[v]], dat[[v1]], n) >> } >> >> f('x', tmp) >> f('y', tmp) >> >> b >> >> >> >> >> 2012/4/11 Sérgio Henrique almeida da silva ju < >> sergio.edfisica@gmail.com> >> >>> Olá >>> >>> alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e >>> y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em >>> uma outra variável: >>> >>> A variável x1 mostra que o A360 inicia-se na segunda linha da >>> variável X e assim por diante. >>> >>> Só que agora eu queria criar uma outra variável x2 e y2 que extrai >>> o valor de A360 das variáveis >>> >>> exemplo >>> >>> Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a >>> 4ª me dando dessa forma o valor A360 >>> Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a >>> 10ª me dando dessa forma o valor A360 >>> >>> e assim por diante. >>> >>> Como faço? >>> >>> x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 >>> *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 12 >>> 0 >>> Obrigado >>> >>> -- >>> 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) 94429486/78101651 id: 123*20942 >>> >>> >>> >>> _______________________________________________ >>> 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) 94429486/78101651 id: 123*20942 > > > > _______________________________________________ > 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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.

Oi Realmente os nomes são diferentes Vou tentar explicar melhor Abaixo um resumo do banco: linhaa linhab x y *A360 2 NA *T792 *X990*A360 -1 7 *S069 *X954 -1 -1 *R092 *J189 -1 1 *R571 *S119*A360 -1 7 *Y004*A330*A360 NA 12 *T792 -1 NA *T794 *S268 -1 -1 *T093 NA -1 *S062 *V499*A360 -1 7 O banco possui milhoes de casos, esse é apenas um exemplo As variáveis x e y eu criei atráves da ajuda do Daniel no outro tópico dados$x=sapply(gregexpr("A360",linhaa),"[",i=1) dados$y=sapply(gregexpr("A360",linhab),"[",i=1) Através desse resultado eu quero criar uma variável que me dê os valores A360 das variáveis linhaa e linhab, aqui eu busco esse valor, mas no meu trabalho original procuro diversos valores, isso é claro se o resultado de x ou y for diferente de -1 ou NA. Exemplo: Abaixo, no meu trabalho original, busco a posição desses diversos códigos e depois desejo estraí-los dessas variáveis colocando em uma outra variável Z, por exemplo Deve ter um comando que eu extrai direto esses valores, porém eu também preciso dos resultados da sintaxe abaixo dados$x1=sapply(gregexpr("A39",linhaa),"[",i=1) dados$x2=sapply(gregexpr("A39",linhab),"[",i=1) dados$x3=sapply(gregexpr("A39",linhac),"[",i=1) dados$x4=sapply(gregexpr("A39",linhad),"[",i=1) dados$x5=sapply(gregexpr("A39",linhaii),"[",i=1) dados$x6=sapply(gregexpr("G00",linhaa),"[",i=1) dados$x7=sapply(gregexpr("G00",linhab),"[",i=1) dados$x8=sapply(gregexpr("G00",linhac),"[",i=1) dados$x9=sapply(gregexpr("G00",linhad),"[",i=1) dados$x10=sapply(gregexpr("G00",linhaii),"[",i=1) dados$x11=sapply(gregexpr("A170",linhaa),"[",i=1) dados$x12=sapply(gregexpr("A170",linhab),"[",i=1) dados$x13=sapply(gregexpr("A170",linhac),"[",i=1) dados$x14=sapply(gregexpr("A170",linhad),"[",i=1) dados$x15=sapply(gregexpr("A170",linhaii),"[",i=1) dados$x16=sapply(gregexpr("G02",linhaa),"[",i=1) dados$x17=sapply(gregexpr("G02",linhab),"[",i=1) dados$x18=sapply(gregexpr("G02",linhac),"[",i=1) dados$x19=sapply(gregexpr("G02",linhad),"[",i=1) dados$x20=sapply(gregexpr("G02",linhaii),"[",i=1) dados$x21=sapply(gregexpr("G03",linhaa),"[",i=1) dados$x22=sapply(gregexpr("G03",linhab),"[",i=1) dados$x23=sapply(gregexpr("G03",linhac),"[",i=1) dados$x24=sapply(gregexpr("G03",linhad),"[",i=1) dados$x25=sapply(gregexpr("G03",linhaii),"[",i=1) dados$x26=sapply(gregexpr("A87",linhaa),"[",i=1) dados$x27=sapply(gregexpr("A87",linhab),"[",i=1) dados$x28=sapply(gregexpr("A87",linhac),"[",i=1) dados$x29=sapply(gregexpr("A87",linhad),"[",i=1) dados$x30=sapply(gregexpr("A87",linhaii),"[",i=1) dados$x31=sapply(gregexpr("B261",linhaa),"[",i=1) dados$x32=sapply(gregexpr("B261",linhab),"[",i=1) dados$x33=sapply(gregexpr("B261",linhac),"[",i=1) dados$x34=sapply(gregexpr("B261",linhad),"[",i=1) dados$x35=sapply(gregexpr("B261",linhaii),"[",i=1) dados$x36=sapply(gregexpr("B051",linhaa),"[",i=1) dados$x37=sapply(gregexpr("B051",linhab),"[",i=1) dados$x38=sapply(gregexpr("B051",linhac),"[",i=1) dados$x39=sapply(gregexpr("B051",linhad),"[",i=1) dados$x40=sapply(gregexpr("B051",linhaii),"[",i=1) dados$x41=sapply(gregexpr("B060",linhaa),"[",i=1) dados$x42=sapply(gregexpr("B060",linhab),"[",i=1) dados$x43=sapply(gregexpr("B060",linhac),"[",i=1) dados$x44=sapply(gregexpr("B060",linhad),"[",i=1) dados$x45=sapply(gregexpr("B060",linhaii),"[",i=1) dados$x46=sapply(gregexpr("B010",linhaa),"[",i=1) dados$x47=sapply(gregexpr("B010",linhab),"[",i=1) dados$x48=sapply(gregexpr("B010",linhac),"[",i=1) dados$x49=sapply(gregexpr("B010",linhad),"[",i=1) dados$x50=sapply(gregexpr("B010",linhaii),"[",i=1) dados$x51=sapply(gregexpr("B003",linhaa),"[",i=1) dados$x52=sapply(gregexpr("B003",linhab),"[",i=1) dados$x53=sapply(gregexpr("B003",linhac),"[",i=1) dados$x54=sapply(gregexpr("B003",linhad),"[",i=1) dados$x55=sapply(gregexpr("B003",linhaii),"[",i=1) dados$x56=sapply(gregexpr("B021",linhaa),"[",i=1) dados$x57=sapply(gregexpr("B021",linhab),"[",i=1) dados$x58=sapply(gregexpr("B021",linhac),"[",i=1) dados$x59=sapply(gregexpr("B021",linhad),"[",i=1) dados$x60=sapply(gregexpr("B021",linhaii),"[",i=1)
b
2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi
Dá o mesmo resultado
Quando executo o comando:
dput(dados[1:10,])
Dá um resultado enorme.
Em 11 de abril de 2012 20:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o q vc tentou das recomendacoes do meu ultimo email e quais os resultados?
2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com
Oi Benilton
Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro.
A variável tem que ser um vetor?
Em 11 de abril de 2012 15:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Oi Benilton
Dá o seguinte erro
dados$x2<- f('x', dados)
Error in substr(dat[[v]], dat[[v1]], n) : invalid substring argument(s)
Em 11 de abril de 2012 14:48, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o codigo q enviei deve fazer algo proximo do q vc quer... so' > copiar/colar e verificar os resultados... > > 2012/4/11 Sérgio Henrique almeida da silva ju < > sergio.edfisica@gmail.com> > >> Oi Benilton >> >> Obrigado pela resposta! >> >> Tentei colocar o exemplo mais reproduzível o possível, mas o banco >> que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade... >> >> Sim, quando falo 2a linha é o 2o caractere da string. >> >> Quando tem o 0 significa que não existe o valor (A360) na linha da >> variável, portanto eu busco valor a partir da posição do caractere indicado >> pela variável. >> No SPSS eu uso o seguinte comando: >> >> IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). >> IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). >> IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). >> IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). >> IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). >> IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4). >> >> Em 11 de abril de 2012 14:02, Benilton Carvalho < >> beniltoncarvalho@gmail.com> escreveu: >> >> 1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere >>> da string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) >>> assumindo q se vc tiver 0, vc nao quer nada na saida... >>> >>> tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', >>> '*A330*A340*A360'), >>> y=c('*A340*A360', '*A360', '*A330*A340 >>> *A360', '*A340', '*A330'), >>> x1=c(2, 0, 0, 7, 12), >>> y1=c(7, 2, 12, 0, 0), >>> stringsAsFactors=FALSE) >>> >>> f = function(v, dat, v1=paste(v, 1, sep='')){ >>> n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) >>> substr(dat[[v]], dat[[v1]], n) >>> } >>> >>> f('x', tmp) >>> f('y', tmp) >>> >>> b >>> >>> >>> >>> >>> 2012/4/11 Sérgio Henrique almeida da silva ju < >>> sergio.edfisica@gmail.com> >>> >>>> Olá >>>> >>>> alguns dias atrás vocês me ajudaram na criação de variáveis (x1 e >>>> y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) em >>>> uma outra variável: >>>> >>>> A variável x1 mostra que o A360 inicia-se na segunda linha da >>>> variável X e assim por diante. >>>> >>>> Só que agora eu queria criar uma outra variável x2 e y2 que >>>> extrai o valor de A360 das variáveis >>>> >>>> exemplo >>>> >>>> Se x1 = 2 eu quero uma substring de x começando da 2ª linha até a >>>> 4ª me dando dessa forma o valor A360 >>>> Se y1 = 7 eu quero uma substring de y começando da 7ª linha até a >>>> 10ª me dando dessa forma o valor A360 >>>> >>>> e assim por diante. >>>> >>>> Como faço? >>>> >>>> x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 >>>> *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 >>>> 12 0 >>>> Obrigado >>>> >>>> -- >>>> 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) 94429486/78101651 id: 123*20942 >>>> >>>> >>>> >>>> _______________________________________________ >>>> 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) 94429486/78101651 id: 123*20942 >> >> >> >> _______________________________________________ >> 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942

Mais uma coisa Minha variável Z vai se gerada se: x = 2 substring de linhaa começando do 2º caractere e que vá até o 5º () x = 7 substring de linhaa começando do 7º caractere e que vá até o 10º (posso ao invés de querer até o 10º ir até o 9º, caractere) e assim por diante Se ao invés de ir até o 5º ir até o 4º caractere, como faço? Como resolver essa questão? Abraços Em 11 de abril de 2012 21:00, Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com> escreveu:
Oi
Realmente os nomes são diferentes
Vou tentar explicar melhor
Abaixo um resumo do banco:
linhaa linhab x y *A360 2 NA *T792 *X990*A360 -1 7 *S069 *X954 -1 -1 *R092 *J189 -1 1 *R571 *S119*A360 -1 7 *Y004*A330*A360 NA 12 *T792 -1 NA *T794 *S268 -1 -1 *T093 NA -1 *S062 *V499*A360 -1 7 O banco possui milhoes de casos, esse é apenas um exemplo As variáveis x e y eu criei atráves da ajuda do Daniel no outro tópico
dados$x=sapply(gregexpr("A360",linhaa),"[",i=1) dados$y=sapply(gregexpr("A360",linhab),"[",i=1)
Através desse resultado eu quero criar uma variável que me dê os valores A360 das variáveis linhaa e linhab, aqui eu busco esse valor, mas no meu trabalho original procuro diversos valores, isso é claro se o resultado de x ou y for diferente de -1 ou NA.
Exemplo:
Abaixo, no meu trabalho original, busco a posição desses diversos códigos e depois desejo estraí-los dessas variáveis colocando em uma outra variável Z, por exemplo
Deve ter um comando que eu extrai direto esses valores, porém eu também preciso dos resultados da sintaxe abaixo
dados$x1=sapply(gregexpr("A39",linhaa),"[",i=1) dados$x2=sapply(gregexpr("A39",linhab),"[",i=1) dados$x3=sapply(gregexpr("A39",linhac),"[",i=1) dados$x4=sapply(gregexpr("A39",linhad),"[",i=1) dados$x5=sapply(gregexpr("A39",linhaii),"[",i=1) dados$x6=sapply(gregexpr("G00",linhaa),"[",i=1) dados$x7=sapply(gregexpr("G00",linhab),"[",i=1) dados$x8=sapply(gregexpr("G00",linhac),"[",i=1) dados$x9=sapply(gregexpr("G00",linhad),"[",i=1) dados$x10=sapply(gregexpr("G00",linhaii),"[",i=1) dados$x11=sapply(gregexpr("A170",linhaa),"[",i=1) dados$x12=sapply(gregexpr("A170",linhab),"[",i=1) dados$x13=sapply(gregexpr("A170",linhac),"[",i=1) dados$x14=sapply(gregexpr("A170",linhad),"[",i=1) dados$x15=sapply(gregexpr("A170",linhaii),"[",i=1) dados$x16=sapply(gregexpr("G02",linhaa),"[",i=1) dados$x17=sapply(gregexpr("G02",linhab),"[",i=1) dados$x18=sapply(gregexpr("G02",linhac),"[",i=1) dados$x19=sapply(gregexpr("G02",linhad),"[",i=1) dados$x20=sapply(gregexpr("G02",linhaii),"[",i=1) dados$x21=sapply(gregexpr("G03",linhaa),"[",i=1) dados$x22=sapply(gregexpr("G03",linhab),"[",i=1) dados$x23=sapply(gregexpr("G03",linhac),"[",i=1) dados$x24=sapply(gregexpr("G03",linhad),"[",i=1) dados$x25=sapply(gregexpr("G03",linhaii),"[",i=1) dados$x26=sapply(gregexpr("A87",linhaa),"[",i=1) dados$x27=sapply(gregexpr("A87",linhab),"[",i=1) dados$x28=sapply(gregexpr("A87",linhac),"[",i=1) dados$x29=sapply(gregexpr("A87",linhad),"[",i=1) dados$x30=sapply(gregexpr("A87",linhaii),"[",i=1) dados$x31=sapply(gregexpr("B261",linhaa),"[",i=1) dados$x32=sapply(gregexpr("B261",linhab),"[",i=1) dados$x33=sapply(gregexpr("B261",linhac),"[",i=1) dados$x34=sapply(gregexpr("B261",linhad),"[",i=1) dados$x35=sapply(gregexpr("B261",linhaii),"[",i=1) dados$x36=sapply(gregexpr("B051",linhaa),"[",i=1) dados$x37=sapply(gregexpr("B051",linhab),"[",i=1) dados$x38=sapply(gregexpr("B051",linhac),"[",i=1) dados$x39=sapply(gregexpr("B051",linhad),"[",i=1) dados$x40=sapply(gregexpr("B051",linhaii),"[",i=1) dados$x41=sapply(gregexpr("B060",linhaa),"[",i=1) dados$x42=sapply(gregexpr("B060",linhab),"[",i=1) dados$x43=sapply(gregexpr("B060",linhac),"[",i=1) dados$x44=sapply(gregexpr("B060",linhad),"[",i=1) dados$x45=sapply(gregexpr("B060",linhaii),"[",i=1) dados$x46=sapply(gregexpr("B010",linhaa),"[",i=1) dados$x47=sapply(gregexpr("B010",linhab),"[",i=1) dados$x48=sapply(gregexpr("B010",linhac),"[",i=1) dados$x49=sapply(gregexpr("B010",linhad),"[",i=1) dados$x50=sapply(gregexpr("B010",linhaii),"[",i=1) dados$x51=sapply(gregexpr("B003",linhaa),"[",i=1) dados$x52=sapply(gregexpr("B003",linhab),"[",i=1) dados$x53=sapply(gregexpr("B003",linhac),"[",i=1) dados$x54=sapply(gregexpr("B003",linhad),"[",i=1) dados$x55=sapply(gregexpr("B003",linhaii),"[",i=1) dados$x56=sapply(gregexpr("B021",linhaa),"[",i=1) dados$x57=sapply(gregexpr("B021",linhab),"[",i=1) dados$x58=sapply(gregexpr("B021",linhac),"[",i=1) dados$x59=sapply(gregexpr("B021",linhad),"[",i=1) dados$x60=sapply(gregexpr("B021",linhaii),"[",i=1)
b
2012/4/12 Sérgio Henrique almeida da silva ju <sergio.edfisica@gmail.com>
Oi
Dá o mesmo resultado
Quando executo o comando:
dput(dados[1:10,])
Dá um resultado enorme.
Em 11 de abril de 2012 20:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
o q vc tentou das recomendacoes do meu ultimo email e quais os
resultados?
2012/4/12 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
Oi Benilton
Quando executo seu comando dá certinho, porém quando passo para os meus dados dá esse erro.
A variável tem que ser um vetor?
Em 11 de abril de 2012 15:05, Benilton Carvalho < beniltoncarvalho@gmail.com> escreveu:
entao vc precisa dar um exemplo reproduzivel do seu conjunto de
dados...
se o mesmo problema acontecer com:
f('x', dados[1:10,])
entao cole aqui o resultado de:
dput(dados[1:10,])
se o problema nao acontecer nesse exemplo reduzido, siga as recomendacoes do guia de postagem (no rodape de toda mensagem) no que se refere a compartilhar arquivos.
benilton
2012/4/11 Sérgio Henrique almeida da silva ju < sergio.edfisica@gmail.com>
> Oi Benilton > > Dá o seguinte erro > > dados$x2<- f('x', dados) > > Error in substr(dat[[v]], dat[[v1]], n) : invalid substring > argument(s) > > > > Em 11 de abril de 2012 14:48, Benilton Carvalho < > beniltoncarvalho@gmail.com> escreveu: > > o codigo q enviei deve fazer algo proximo do q vc quer... so' >> copiar/colar e verificar os resultados... >> >> 2012/4/11 Sérgio Henrique almeida da silva ju < >> sergio.edfisica@gmail.com> >> >>> Oi Benilton >>> >>> Obrigado pela resposta! >>> >>> Tentei colocar o exemplo mais reproduzível o possível, mas o banco >>> que estou trabalhando é um pouco complicado mesmo, por isso a dificuldade... >>> >>> Sim, quando falo 2a linha é o 2o caractere da string. >>> >>> Quando tem o 0 significa que não existe o valor (A360) na linha da >>> variável, portanto eu busco valor a partir da posição do caractere indicado >>> pela variável. >>> No SPSS eu uso o seguinte comando: >>> >>> IF (x1 = 2) x2=CHAR.SUBSTR(x,2,4). >>> IF (x1 = 7) x2=CHAR.SUBSTR(x,7,4). >>> IF (x1 = 12) x2=CHAR.SUBSTR(x,12,4). >>> IF (y1 = 2) y2=CHAR.SUBSTR(y,2,4). >>> IF (y1 = 7) y2=CHAR.SUBSTR(y,7,4). >>> IF (y1 = 12) y2=CHAR.SUBSTR(y,12,4). >>> >>> Em 11 de abril de 2012 14:02, Benilton Carvalho < >>> beniltoncarvalho@gmail.com> escreveu: >>> >>> 1) assumindo q qdo vc fala "2a linha" vc quer dizer "2o caractere >>>> da string"... 2) colocando um exemplo apropriadamente reproduzivel... 3) >>>> assumindo q se vc tiver 0, vc nao quer nada na saida... >>>> >>>> tmp = data.frame(x=c('*A360', '*A330', '*A340', '*A340*A360', >>>> '*A330*A340*A360'), >>>> y=c('*A340*A360', '*A360', '*A330*A340 >>>> *A360', '*A340', '*A330'), >>>> x1=c(2, 0, 0, 7, 12), >>>> y1=c(7, 2, 12, 0, 0), >>>> stringsAsFactors=FALSE) >>>> >>>> f = function(v, dat, v1=paste(v, 1, sep='')){ >>>> n = ifelse(dat[[v1]] > 0, nchar(dat[[v]]), NA) >>>> substr(dat[[v]], dat[[v1]], n) >>>> } >>>> >>>> f('x', tmp) >>>> f('y', tmp) >>>> >>>> b >>>> >>>> >>>> >>>> >>>> 2012/4/11 Sérgio Henrique almeida da silva ju < >>>> sergio.edfisica@gmail.com> >>>> >>>>> Olá >>>>> >>>>> alguns dias atrás vocês me ajudaram na criação de variáveis (x1 >>>>> e y1), onde a mesmas me mostram a posição inicial de um certo valor (A360) >>>>> em uma outra variável: >>>>> >>>>> A variável x1 mostra que o A360 inicia-se na segunda linha da >>>>> variável X e assim por diante. >>>>> >>>>> Só que agora eu queria criar uma outra variável x2 e y2 que >>>>> extrai o valor de A360 das variáveis >>>>> >>>>> exemplo >>>>> >>>>> Se x1 = 2 eu quero uma substring de x começando da 2ª linha até >>>>> a 4ª me dando dessa forma o valor A360 >>>>> Se y1 = 7 eu quero uma substring de y começando da 7ª linha até >>>>> a 10ª me dando dessa forma o valor A360 >>>>> >>>>> e assim por diante. >>>>> >>>>> Como faço? >>>>> >>>>> x y x1 y1 *A360 *A340*A360 2 7 *A330 *A360 0 2 *A340 >>>>> *A330*A340*360 0 12 *A340*A360 *A340 7 0 *A330*A340*360 *A330 >>>>> 12 0 >>>>> Obrigado >>>>> >>>>> -- >>>>> 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) 94429486/78101651 id: 123*20942 >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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) 94429486/78101651 id: 123*20942 >>> >>> >>> >>> _______________________________________________ >>> 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) 94429486/78101651 id: 123*20942 > > > > _______________________________________________ > 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
_______________________________________________ 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) 94429486/78101651 id: 123*20942
-- 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) 94429486/78101651 id: 123*20942
participantes (2)
-
Benilton Carvalho
-
Sérgio Henrique almeida da silva ju