[R-br] Duvida String

Sérgio Henrique almeida da silva ju sergio.edfisica em gmail.com
Quarta Abril 11 21:18:27 BRT 2012


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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120411/1ea799ab/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br