[R-br] Duvida String

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


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


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