[R-br] RES: RES: Laço para gerar Subconjuntos

Mauro Sznelwar sznelwar em uol.com.br
Sexta Novembro 13 00:54:04 BRST 2015


Onde eu pego este arquivo ExemploReduzdo.csv? Se alguém puder enviar para mim em particular seria melhor.

 

 

Para mim, eu tive que fazer um ajuste um pouco diferente mas vou testar o que você fez também.Muuito obrigada! Estou mandando o que eu fiz abaixo:

 

 

> 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

  (int)  (dbl)  (dbl)

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)) %>% 

+   ungroup %>% 

+   group_by(Data) %>% 

+   select(Primeiro = Preco)

> b

Source: local data frame [3 x 2]

Groups: Data [3]

 

   Data Primeiro

  (int)    (dbl)

1 37988     38.0

2 37991     37.9

3 37992     38.9

> 

> 

> 

> c<-AA %>%

+   group_by(Data) %>% 

+   slice(which.max(hora)) %>% 

+   ungroup %>% 

+   group_by(Data) %>% 

+   select(Ultimo = Preco)

> 

> c

Source: local data frame [3 x 2]

Groups: Data [3]

 

   Data Ultimo

  (int)  (dbl)

1 37988  38.05

2 37991  37.90

3 37992  38.90

> 

> 

> d<-cbind(a,b[,2],c[,2])

> d

   Data maximo minimo Primeiro Ultimo

1 37988  38.06  38.00     38.0  38.05

2 37991  72.23  32.23     37.9  37.90

3 37992  41.45  38.90     38.9  38.90

 

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

Acabei de atualizar o R e o pacote dplyr.

 

> sessionInfo()

R version 3.2.2 (2015-08-14)

Platform: x86_64-w64-mingw32/x64 (64-bit)

Running under: Windows 8 x64 (build 9200)

 

locale:

[1] LC_COLLATE=Portuguese_Brazil.1252  LC_CTYPE=Portuguese_Brazil.1252    LC_MONETARY=Portuguese_Brazil.1252

[4] LC_NUMERIC=C                       LC_TIME=Portuguese_Brazil.1252    

 

attached base packages:

[1] stats     graphics  grDevices utils     datasets  methods   base     

 

other attached packages:

[1] dplyr_0.4.3

 

loaded via a namespace (and not attached):

[1] magrittr_1.5   R6_2.1.1       assertthat_0.1 parallel_3.2.2 DBI_0.3.1      tools_3.2.2    Rcpp_0.12.1

 

Nessa versão do R e do dplyr, os seguintes comandos funcionam pra mim(um pouco diferente da minha primeira sugestão)

> AA %>% group_by(Data) %>% filter(Hora == min(Hora)) %>% select(Primeiro = Preco)

Source: local data frame [3 x 2]

Groups: Data [3]

 

   Data Primeiro

  (int)    (dbl)

1 37988     38.0

2 37991     37.9

3 37992     38.9

> AA %>% group_by(Data) %>% filter(Hora == max(Hora)) %>% select(Ultimo = Preco)

Source: local data frame [3 x 2]

Groups: Data [3]

 

   Data Ultimo

  (int)  (dbl)

1 37988  38.05

2 37991  37.90

3 37992  38.90

 

 

 

2015-11-11 23:44 GMT-02:00 Mauro Sznelwar <sznelwar em uol.com.br>:

Porque quando rodo não dá certo? Eu coloquei os dois bancos de dados AA e DATA

AA %>% group_by(Data) %>% summarise(maximo = max(Preco), minimo = min(Preco))

Error: index out of bounds

 

> 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.

 

 

  _____  


 <https://www.avast.com/antivirus> Avast logo

Este email foi escaneado pelo Avast antivírus. 
www.avast.com <https://www.avast.com/antivirus>  

 


_______________________________________________
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.

 



---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151113/09a6d9f7/attachment.html>


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