[R-br] Laço para gerar Subconjuntos

Michelle Bau Graczyk mbgraczyk em gmail.com
Quinta Novembro 12 12:18:16 BRST 2015


Oi Thiago,

Eu não respondi antes porque o meu deu um erro e eu estava tentando
resolver mas não consegui.
O erro que dá é:
> AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE
+                ,dec=".",as.is=TRUE, sep=",",, col.names=c("Data","hora",
"bid","bidQ","ask","askQ","Preco","volume"))
> library(dplyr)
> a<-AA %>% group_by(Data) %>% summarise(maximo = max(Preco), minimo =
min(Preco))
> a
Source: local data frame [3 x 3]

   Data maximo minimo
1 37988  38.06  38.00
2 37991  72.23  32.23
3 37992  41.45  38.90
>
>
> b<-AA %>% group_by(Data) %>% slice(which.min(Hora)) %>% select(Primeiro =
Preco)
Erro em eval(expr, envir, enclos) :
  não foi possível encontrar a função "slice"

Eu tentei desinstalar e instalar de novo e nada. Você saberia me dizer como
posso arrumar?

Muito obrigada pelas dicas que foram ótimas e de aprendizado para mim!

Em 11 de novembro de 2015 15:19, Thiago Serafim <thiago.serafim em gmail.com>
escreveu:

> Para manipulação de dados eu sugiro o pacote dplyr. E acho que o operador
> %>% torna a manipulação mais intuitiva.
> Tem um bom tutorial aqui: http://rpubs.com/justmarkham/dplyr-tutorial
>
> > library(dplyr)
> > AA %>% group_by(Data) %>% summarise(maximo = max(Preco), minimo =
> min(Preco))
> Source: local data frame [3 x 3]
>
>    Data maximo minimo
> 1 37988  38.06   38.0
> 2 37991  37.90   37.9
> 3 37992  38.90   38.9
>
> > AA %>% group_by(Data) %>% slice(which.min(Hora)) %>% select(Primeiro =
> Preco)
> Source: local data frame [3 x 2]
> Groups: Data
>
>    Data Primeiro
> 1 37988     38.0
> 2 37991     37.9
> 3 37992     38.9
>
> AA %>% group_by(Data) %>% slice(which.max(Hora)) %>% select(Ultimo = Preco)
> Source: local data frame [3 x 2]
> Groups: Data
>
>    Data Ultimo
> 1 37988  38.05
> 2 37991  37.90
> 3 37992  38.90
>
>
> 2015-11-11 14:28 GMT-02:00 salah <salah3.1416 em gmail.com>:
>
>> Olá, segue uma sugestão
>>
>> DADOS = structure(list(Data = c(37988L, 37988L, 37988L, 37988L, 37988L,
>>                                                 37988L, 37991L, 37991L,
>> 37991L, 37991L, 37992L, 37992L, 37992L,
>>                                                 37992L), Hora =
>> c(34251.038, 34263.36, 34296.73, 34301.369,
>>                                                 34318.91, 34324.707,
>> 34398.295, 34400.585, 34416.511, 34425.892,
>>                                                 34250.443, 34252.127,
>> 34266.757, 34273.928), X1 = c(-1, -1,
>>                                                 38.05, 38.06, 38.06,
>> 38.04, 37.8, 37.8, 37.85, 37.85, -1, -1,
>>                                                 38.85, 38.85), X2 =
>> c(-1L, -1L, 32L, 2L, 4L, 1L, 50L, 50L,
>>                                                 1L, 1L, -1L, -1L, 1L,
>> 1L), X3 = c(-1, -1, 38.08, 38.08, 38.07,
>>                                                 38.07, 38.3, 38.3, 37.95,
>> 37.95, -1, -1, 38.95, 38.95), X4 =
>> c(-1L,
>>                                                 -1L, 1L, 1L, 1L, 1L,
>> 203L, 203L, 1L, 1L, -1L, -1L, 1L, 1L), Preco
>> = c(38,
>>                                                 38, 38.05, 38.06, 38.06,
>> 38.05, 37.9, 37.9, 37.9, 37.9, 38.9,
>>                                                 38.9, 38.9, 38.9), Volume
>> = c(600L, 5000L, 6000L, 1500L, 500L,
>>                                                 4500L, 161800L, 500L,
>> 3700L, 1100L, 125000L, 1100L, 400L, 1000L
>>                                 )), .Names = c("Data", "Hora", "X1",
>> "X2", "X3",
>>                                 "X4", "Preco", "Volume"), class =
>> "data.frame", row.names = c(NA,
>>                                 -14L))
>> library(data.table)
>>
>> ## converte data.frame para data.table
>> setDT(DADOS)
>> ## em list voce pode escolher max, min, mean, sd, etc. Em by voce
>> escolhe por preco
>> ## por Data, qual variavel que deseja
>>
>> ## por volume e data
>> DADOS[, list(Precomax=max(Preco), Precomin=min(Preco)), by = .(Data,
>> Volume)]
>>
>> ## por data
>> DADOS[, list(Precomax=max(Preco), Precomin=min(Preco)), by = .(Data)]
>>
>> ?data.table
>>
>>
>> Em Qua, 2015-11-11 às 13:00 -0200, Michelle Bau Graczyk escreveu:
>> > Caros, bom dia…
>> >
>> >
>> > Estou com uma dúvida bem boba mas não consigo resolver!
>> >
>> >
>> > Eu tenho um data frame que a primeira coluna é a data, a segunda é o
>> > horário e as outras seis são dados como preço e volume.
>> > Os dias estão em forma numérica e eu os deixei assim porque achei que
>> > seria mais fácil fazer o laço. O objetivo é que para cada daia eu ache
>> > o valor inicial e final do preço assim como o seu máximo e seu mínimo.
>> > Estou tendo problemas somente em trocar de dia.
>> > Abaixo segue um pedaço reduzido do data frame e o código.
>> > Alguém poderia me dar uma dica?
>> > Muito obrigada!
>> > AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE
>> > +                ,dec=".",as.is=TRUE, sep=",")
>> > > #AA
>> > > dput(AA)
>> > structure(list(X37988 = c(37988L, 37988L, 37988L, 37988L, 37988L,
>> > 37988L, 37991L, 37991L, 37991L, 37991L, 37992L, 37992L, 37992L,
>> > 37992L), X34244.059 = c(34251.038, 34263.36, 34296.73, 34301.369,
>> > 34318.91, 34324.707, 34398.295, 34400.585, 34416.511, 34425.892,
>> > 34250.443, 34252.127, 34266.757, 34273.928), X.1 = c(-1, -1,
>> > 38.05, 38.06, 38.06, 38.04, 37.8, 37.8, 37.85, 37.85, -1, -1,
>> > 38.85, 38.85), X.1.1 = c(-1L, -1L, 32L, 2L, 4L, 1L, 50L, 50L,
>> > 1L, 1L, -1L, -1L, 1L, 1L), X.1.2 = c(-1, -1, 38.08, 38.08, 38.07,
>> > 38.07, 38.3, 38.3, 37.95, 37.95, -1, -1, 38.95, 38.95), X.1.3 =
>> > c(-1L,
>> > -1L, 1L, 1L, 1L, 1L, 203L, 203L, 1L, 1L, -1L, -1L, 1L, 1L), X38 =
>> > c(38,
>> > 38, 38.05, 38.06, 38.06, 38.05, 37.9, 37.9, 37.9, 37.9, 38.9,
>> > 38.9, 38.9, 38.9), X55900 = c(600L, 5000L, 6000L, 1500L, 500L,
>> > 4500L, 161800L, 500L, 3700L, 1100L, 125000L, 1100L, 400L, 1000L
>> > )), .Names = c("X37988", "X34244.059", "X.1", "X.1.1", "X.1.2",
>> > "X.1.3", "X38", "X55900"), class = "data.frame", row.names = c(NA,
>> > -14L))
>> > >
>> > > matriz<-matrix(NA,230,4)## numero de linhas é o numero de dias.
>> > > colnames(matriz)<-c("open","close","low","higth")
>> > > i<-1
>> > > for( x in 37988:38000){
>> > +
>> > +
>> > +   #x<-37988
>> > +
>> > +   if(AA$data==x){
>> > +     AA1<-subset(AA,AA$data==x)
>> > +     matriz[i,1]<-AA1[1,7]
>> > +     matriz[i,2]<-AA1[nrow(AA1),7]
>> > +     matriz[i,3]<-min(AA1$last)
>> > +     matriz[i,4]<-max(AA1$last)
>> > +
>> > +     i=i+1
>> > +   }
>> > +
>> > AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE
>> > +                ,dec=".",as.is=TRUE, sep=",")
>> > + #AA
>> > + dput(AA)
>> > +
>> > + matriz<-matrix(NA,3,4)## numero de linhas é o numero de dias.
>> > + colnames(matriz)<-c("open","close","low","higth")
>> > + i<-1
>> > + for( x in 37988:37992){
>> > +
>> > +
>> > +
>> > +
>> > +   if(AA$data==x){
>> > +     AA1<-subset(AA,AA$data==x)
>> > +     matriz[i,1]<-AA1[1,7]
>> > +     matriz[i,2]<-AA1[nrow(AA1),7]
>> > +     matriz[i,3]<-min(AA1$last)
>> > +     matriz[i,4]<-max(AA1$last)
>> > +
>> > +     i=i+1
>> > +   }
>> > + }
>> > + matriz
>> > + write.table(matriz,"Matriz4ParametrosPreço.txt")
>> > +
>> > _______________________________________________
>> > 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 fornea
>> cdigo mnimo reproduzvel.
>>
>>
>> _______________________________________________
>> 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 fornea
>> cdigo mnimo reproduzvel.
>
>
>
> _______________________________________________
> 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/20151112/3c17ada3/attachment.html>


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