[R-br] Extraindo valores de interesse em um dataframe

Tiago Fragoso fragoso2718 em gmail.com
Sexta Janeiro 27 10:31:28 BRST 2017


Olá,

A expressão ficou meio indecifrável mesmo, mas isso tende a acontecer com
expressões regulares. Para te dar uma direção, a função str_match() busca
uma string de texto por um padrão especificado. Frequentemente, você usa
uma expressão regular (regex) para dar um match em padrões mais gerais. O
match_all faz isso em uma lista de strings.

A parte indecifrável é a regex. Se você vai mexer um pouco com esses logs,
talvez seja bom ler um pouco a respeito. Ela diz, em linhas gerais:

(?=   <- olha para a string a frente e identifica uma das 2 alternativas
(       <- inicio do grupo de captura
\\*DSSAT <- strings iniciadas com '*DSSAT")
[\\S\\s]*? <- captura tudo que não for whitespace (\S) ou for (\s)
\\R\\R) <- duas quebras de linha (\n\t, etc)
|  <- 'ou' da condicional
(\\*DSSAT[\\S\\s]*? <- mesma coisa da string anterior
$ <- fim da string
) <- fim da condicional

Basicamente, essa expressão diz "Capture tudo entre *DSSAT e duas quebras
de linha" (que são as runs antes da ultima) ou "tudo entre DSSAT e o fim da
string olhando a frente" (que é o caso da última).




2017-01-27 9:11 GMT-02:00 Yury Duarte <yurynepomuceno em gmail.com>:

> Bom dia colegas!
>
> Rafael e Tiago, gostaria de agradecer pelas dicas na manipulação dos
> outputs do DSSAT.
> Não sou familiar com os comandos que vcs sugeriram (Tiago, ainda estou
> tentando decifrar sua linha de comando), mas irei estuda-los para tentar
> aplicar nos meus arquivos PlantGro.OUT, acho que essa será uma saída.
> Acredito que mais algumas duvidas irão surgir conforme eu avançar nessa
> manipulação dos dados, então retornarei esse post para mais esclarecimentos
> muito em breve.
> Mais uma vez, agradeço pela ajuda de todos!!
>
> Abs
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
> Em 26 de janeiro de 2017 14:49, Tiago Fragoso <fragoso2718 em gmail.com>
> escreveu:
>
>> Olá,
>>
>> Para a última linha de cada uma das suas simulações, você pode ler o seu
>> código no R usando a função readChar() para ler apenas como um string e
>> separar as últimas linhas em uma lista usando
>>
>> stringr::str_match_all(string = teste,pattern =
>> '(?=(\\*DSSAT[\\S\\s]*?\\R\\R)|(\\*DSSAT[\\S\\s]*?$))')
>>
>> Repare apenas que todas as linhas menos a última do arquivo estarão na
>> posição 2 do array, enquanto a última estará no 3. Com a linha separada,
>> você pode obter o valor que quiser usando strsplit() e a posição que quiser.
>>
>> 2017-01-23 11:58 GMT-02:00 Yury Duarte via R-br <r-br em listas.c3sl.ufpr.br
>> >:
>>
>>> Bom dia colegas programadores!
>>>
>>> Há algum tempo venho trabalhando com o modelo de simulação DSSAT.
>>> Agora estou tentando organizar suas saídas de uma forma que facilite as
>>> analises. Para que possam entender melhor o formato das saídas, anexei dois
>>> links para download do output do modelo.
>>> Toda simulação é antecedida de um pequeno cabeçalho e cada uma delas
>>> representa uma data de plantio (primeira linha da coluna DOY) em um
>>> determinado ano (coluna YEAR).
>>> Dessa forma, dentro de cada arquivo eu tenho 36 simulações de plantio
>>> por ano e 34 anos de histórico.
>>> A informação que eu gostaria de extrair é exatamente a última linha de
>>> cada simulação, referente a décima coluna (GWAD). Como cada simulação tem
>>> um numero diferente de linhas (dias do ciclo da cultura em questão), fiquei
>>> sem ter como resgatar os valores da coluna de interesse em intervalos fixos.
>>> Infelizmente não tenho nenhum script decente em andamento que possa ser
>>> compartilhado para elucidar melhor minhas intenções, mas espero ter
>>> conseguido explicar minimamente a minha dúvida.
>>>
>>> Desde já, agradeço a todos!
>>>
>>> link para a saída parcial:
>>> https://drive.google.com/file/d/0B6tnaf2fmoCcbUtPQ0NfUmpxdXM
>>> /view?usp=sharing
>>>
>>> link para a saída completa:
>>> https://drive.google.com/file/d/0B6tnaf2fmoCcWjlFclc2R2NkVEU
>>> /view?usp=sharing
>>>
>>> Yury Duarte
>>> Engenheiro Agrônomo - ESALQ/USP
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170127/8be3f141/attachment.html>


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