[R-br] Duvida String

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


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


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