[R-br] Trabalhar com subsets de data frame

Augusto Ribas ribas.aca em gmail.com
Terça Novembro 10 11:08:38 BRST 2015


Ola.

Talvez se você informar como está lendo seu dados ajude, imagino que está
tudo como charater, mas você pode passar esses dados para algum formato de
tempo, por exemplo o posix do R, mas tem pacotes so com coisas de tempo
também que podem te dar soluções até mais faceis.
Mas segue uma solução que talvez ajude.

#veja como é o tempo no R
Sys.time()

#criando seu vetor de indices
#de um ?as.POSIXct, veja uns exemplos, para converter suas colunas para
tempo no formato do posix
#Dai vc precisa de um tempo inicial, vamos supor agora
inicio <- as.POSIXct("2015-11-10 09:31:18 AMST")
#O fim das suas coletas, daqui 30 min por exeplo
fim <- inicio + as.difftime(30, units="mins")
#e  vc cria um vetor de min em min, mas poderia ser qq intervalo, de 5 em 5
min, so mudar o by
indice<-seq(from=inicio, by=as.difftime(1, units="mins"), to=fim)

#gerando alguns dados de exemplo
medida<-rnorm(100,10,2)
horario<-indice[sample(1:length(indice),100,replace=T)]
dados<-data.frame(medida,horario)

#veja os dados, imagino que no final vc vai ter medidas e o tempo
dados

#agora da pra usar cut com o indice para juntar seus dados e aggregate da
forma convencional
aggregate(dados$medida,list(cut(dados$horario,indice[-1])),mean)
#ai pra normalizar, fazer outras operações, é so ir usando o fator que o
cut gera pra vc

Em 10 de novembro de 2015 09:14, Michelle Bau Graczyk <mbgraczyk em gmail.com>
escreveu:

> Caros, bom dia,
>
> Eu estou com um data frame da forma :
> "data" "hora" "bid" "bidQ" "ask" "askQ" "last" "volume"
> "1" 2004-01-04 "09:30" -1 -1 -1 -1 38 55900
> "2" 2004-01-04 "09:30" -1 -1 -1 -1 38 600
> "3" 2004-01-04 "09:31" -1 -1 -1 -1 38 5000
> "4" 2004-01-04 "09:31" 38.05 32 38.08 1 38.05 6000
> "5" 2004-01-04 "09:31" 38.06 2 38.08 1 38.06 1500
> "6" 2004-01-04 "09:31" 38.06 4 38.07 1 38.06 500
> "7" 2004-01-04 "09:32" 38.04 1 38.07 1 38.05 4500
> "8" 2004-01-04 "09:32" 38 1 38.2 1 38.03 1600
> "9" 2004-01-04 "09:32" 38 1 38.2 1 38.03 3800
> "10" 2004-01-04 "09:32" 38 1 38.04 1 38.04 500
> "11" 2004-01-04 "09:32" 38 1 38.07 1 38.03 200
> "12" 2004-01-04 "09:32" 38 1 38.08 2 38.07 100
> "13" 2004-01-04 "09:32" 38 1 38.08 2 38.01 5000
> "14" 2004-01-04 "09:32" 38 21 38.08 2 38.05 200
> "15" 2004-01-04 "09:33" 38.03 9 38.13 8 38.08 700
> "16" 2004-01-04 "09:33" 38.08 15 38.13 8 38.08 100
> "17" 2004-01-04 "09:33" 38.11 16 38.13 10 38.12 900
>
> onde as datas vão de 2004-01-04 até 2013-06-30 e os horários de 09:30 até
> 16:10.
> Eu tenho que achar o volume médio para cada minuto e depois normalizar
>  esses volumes para cada minuto pelo volume médio.
> Eu tento montar um programa cheio de for() para data e for() para horário
> mas não está dando certo… Acho que deve ter uma lógica mais simples.
> Alguém saberia me dar uma dica?
>
> Muito obrigada!
>
> Michelle
>
>
>
> _______________________________________________
> 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.
>



-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151110/62fe5a06/attachment.html>


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