<div dir="ltr">Na versão 0.5 do dplyr já não será preciso fazer esse ajuste que você fez(usando o ungroup).<div><a href="https://github.com/hadley/dplyr/issues/1405">https://github.com/hadley/dplyr/issues/1405</a><br></div><div><a href="https://github.com/hadley/dplyr/issues/1341">https://github.com/hadley/dplyr/issues/1341</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-12 16:02 GMT-02:00 Michelle Bau Graczyk <span dir="ltr"><<a href="mailto:mbgraczyk@gmail.com" target="_blank">mbgraczyk@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">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:<div><br></div><div><br><div><div>> AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE</div><span class=""><div>+ ,dec=".",<a href="http://as.is" target="_blank">as.is</a>=TRUE, sep=",",, col.names=c("Data","hora", "bid","bidQ","ask","askQ","Preco","volume")) </div><div>> library(dplyr)</div></span><div>> a<-AA %>% group_by(Data) %>% summarise(maximo = max(Preco), minimo = min(Preco))</div><div>> a</div><span class=""><div>Source: local data frame [3 x 3]</div><div><br></div><div> Data maximo minimo</div></span><div> (int) (dbl) (dbl)</div><span class=""><div>1 37988 38.06 38.00</div><div>2 37991 72.23 32.23</div><div>3 37992 41.45 38.90</div><div>> </div><div>> </div><div>> b<-AA %>% </div></span><div>+ group_by(Data) %>% </div><div>+ slice(which.min(hora)) %>% </div><div>+ ungroup %>% </div><div>+ group_by(Data) %>% </div><div>+ select(Primeiro = Preco)</div><div>> b</div><span class=""><div>Source: local data frame [3 x 2]</div><div>Groups: Data [3]</div><div><br></div><div> Data Primeiro</div><div> (int) (dbl)</div><div>1 37988 38.0</div><div>2 37991 37.9</div><div>3 37992 38.9</div><div>> </div><div>> </div><div>> </div></span><div>> c<-AA %>%</div><div>+ group_by(Data) %>% </div><div>+ slice(which.max(hora)) %>% </div><div>+ ungroup %>% </div><div>+ group_by(Data) %>% </div><div>+ select(Ultimo = Preco)</div><div>> </div><div>> c</div><span class=""><div>Source: local data frame [3 x 2]</div><div>Groups: Data [3]</div><div><br></div><div> Data Ultimo</div><div> (int) (dbl)</div><div>1 37988 38.05</div><div>2 37991 37.90</div><div>3 37992 38.90</div><div>> </div><div>> </div></span><div>> d<-cbind(a,b[,2],c[,2])</div><div>> d</div><div> Data maximo minimo Primeiro Ultimo</div><div>1 37988 38.06 38.00 38.0 38.05</div><div>2 37991 72.23 32.23 37.9 37.90</div><div>3 37992 41.45 38.90 38.9 38.90</div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">Em 12 de novembro de 2015 15:01, Thiago Serafim <span dir="ltr"><<a href="mailto:thiago.serafim@gmail.com" target="_blank">thiago.serafim@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Acabei de atualizar o R e o pacote dplyr.<div><br><div>> sessionInfo()</div><div>R version 3.2.2 (2015-08-14)</div><div>Platform: x86_64-w64-mingw32/x64 (64-bit)</div><div>Running under: Windows 8 x64 (build 9200)</div><div><br></div><div>locale:</div><div>[1] LC_COLLATE=Portuguese_Brazil.1252 LC_CTYPE=Portuguese_Brazil.1252 LC_MONETARY=Portuguese_Brazil.1252</div><div>[4] LC_NUMERIC=C LC_TIME=Portuguese_Brazil.1252 </div><div><br></div><div>attached base packages:</div><div>[1] stats graphics grDevices utils datasets methods base </div><div><br></div><div>other attached packages:</div><div>[1] dplyr_0.4.3</div><div><br></div><div>loaded via a namespace (and not attached):</div><div>[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</div></div><div><br></div><div>Nessa versão do R e do dplyr, os seguintes comandos funcionam pra mim(um pouco diferente da minha primeira sugestão)</div><div><div>> AA %>% group_by(Data) %>% filter(Hora == min(Hora)) %>% select(Primeiro = Preco)</div><span><div>Source: local data frame [3 x 2]</div></span><div>Groups: Data [3]</div><div><br></div><div> Data Primeiro</div><div> (int) (dbl)</div><span><div>1 37988 38.0</div><div>2 37991 37.9</div><div>3 37992 38.9</div></span><div>> AA %>% group_by(Data) %>% filter(Hora == max(Hora)) %>% select(Ultimo = Preco)</div><span><div>Source: local data frame [3 x 2]</div></span><div>Groups: Data [3]</div><div><br></div><div> Data Ultimo</div><div> (int) (dbl)</div><span><div>1 37988 38.05</div><div>2 37991 37.90</div><div>3 37992 38.90</div></span></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><span>2015-11-11 23:44 GMT-02:00 Mauro Sznelwar <span dir="ltr"><<a href="mailto:sznelwar@uol.com.br" target="_blank">sznelwar@uol.com.br</a>></span>:<br></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
<div lang="PT-BR" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif";color:#1f497d">Porque
quando rodo não dá certo? Eu coloquei os dois bancos de dados AA e DATA<u></u><u></u></span></p><span>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Arial","sans-serif";color:#1f497d">AA %>% group_by(Data) %>% summarise(maximo = max(Preco),
minimo = min(Preco))<u></u><u></u></span></p>
</span><p class="MsoNormal"><span lang="EN-US" style="font-family:"Arial","sans-serif";color:#1f497d">Error: index out of bounds</span><span lang="EN-US" style="font-family:"Arial","sans-serif""><u></u><u></u></span></p><div><div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal">> library(dplyr)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">> AA %>% group_by(Data) %>% summarise(maximo =
max(Preco), minimo = min(Preco))<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Source: local data frame [3 x 3]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> Data maximo minimo<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">1 37988 38.06 38.0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2 37991 37.90 37.9<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">3 37992 38.90 38.9<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">> AA %>% group_by(Data) %>% slice(which.min(Hora))
%>% select(Primeiro = Preco)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Source: local data frame [3 x 2]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Groups: Data<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> Data Primeiro<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">1 37988 38.0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2 37991 37.9<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">3 37992 38.9<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">AA %>% group_by(Data) %>% slice(which.max(Hora))
%>% select(Ultimo = Preco)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Source: local data frame [3 x 2]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Groups: Data<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> Data Ultimo<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">1 37988 38.05<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2 37991 37.90<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">3 37992 38.90<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">2015-11-11 14:28 GMT-02:00 salah <<a href="mailto:salah3.1416@gmail.com" target="_blank">salah3.1416@gmail.com</a>>:<u></u><u></u></p>
<p class="MsoNormal">Olá, segue uma sugestão<br>
<br>
DADOS = structure(list(Data = c(37988L, 37988L, 37988L, 37988L, 37988L,<br>
37988L, 37991L, 37991L, 37991L, 37991L, 37992L, 37992L, 37992L,<br>
37992L), Hora = c(34251.038, 34263.36, 34296.73, 34301.369,<br>
34318.91, 34324.707, 34398.295, 34400.585, 34416.511, 34425.892,<br>
34250.443, 34252.127, 34266.757, 34273.928), X1 = c(-1, -1,<br>
38.05, 38.06, 38.06, 38.04, 37.8, 37.8, 37.85, 37.85, -1, -1,<br>
38.85, 38.85), X2 = c(-1L, -1L, 32L, 2L, 4L, 1L, 50L, 50L,<br>
1L, 1L, -1L, -1L, 1L, 1L), X3 = c(-1, -1, 38.08, 38.08, 38.07,<br>
38.07, 38.3, 38.3, 37.95, 37.95, -1, -1, 38.95, 38.95), X4 =<br>
c(-1L,<br>
-1L, 1L, 1L, 1L, 1L, 203L, 203L, 1L, 1L, -1L, -1L, 1L, 1L), Preco<br>
= c(38,<br>
38, 38.05, 38.06, 38.06, 38.05, 37.9, 37.9, 37.9, 37.9, 38.9,<br>
38.9, 38.9, 38.9), Volume = c(600L, 5000L, 6000L, 1500L, 500L,<br>
4500L, 161800L, 500L, 3700L, 1100L, 125000L, 1100L, 400L, 1000L<br>
)), .Names = c("Data",
"Hora", "X1", "X2", "X3",<br>
"X4", "Preco",
"Volume"), class = "data.frame", row.names = c(NA,<br>
-14L))<br>
library(data.table)<br>
<br>
## converte data.frame para data.table<br>
setDT(DADOS)<br>
## em list voce pode escolher max, min, mean, sd, etc. Em by voce<br>
escolhe por preco<br>
## por Data, qual variavel que deseja<br>
<br>
## por volume e data<br>
DADOS[, list(Precomax=max(Preco), Precomin=min(Preco)), by = .(Data,<br>
Volume)]<br>
<br>
## por data<br>
DADOS[, list(Precomax=max(Preco), Precomin=min(Preco)), by = .(Data)]<br>
<br>
?data.table<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><br>
<br>
Em Qua, 2015-11-11 às 13:00 -0200, Michelle Bau Graczyk escreveu:<br>
> Caros, bom dia…<br>
><br>
><br>
> Estou com uma dúvida bem boba mas não consigo resolver!<br>
><br>
><br>
> Eu tenho um data frame que a primeira coluna é a data, a segunda é o<br>
> horário e as outras seis são dados como preço e volume.<br>
> Os dias estão em forma numérica e eu os deixei assim porque achei que<br>
> seria mais fácil fazer o laço. O objetivo é que para cada daia eu ache<br>
> o valor inicial e final do preço assim como o seu máximo e seu mínimo.<br>
> Estou tendo problemas somente em trocar de dia.<br>
> Abaixo segue um pedaço reduzido do data frame e o código.<br>
> Alguém poderia me dar uma dica?<br>
> Muito obrigada!<br>
>
AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE<br>
> +
,dec=".",<a href="http://as.is" target="_blank">as.is</a>=TRUE,
sep=",")<br>
> > #AA<br>
> > dput(AA)<br>
> structure(list(X37988 = c(37988L, 37988L, 37988L, 37988L, 37988L,<br>
> 37988L, 37991L, 37991L, 37991L, 37991L, 37992L, 37992L, 37992L,<br>
> 37992L), X34244.059 = c(34251.038, 34263.36, 34296.73, 34301.369,<br>
> 34318.91, 34324.707, 34398.295, 34400.585, 34416.511, 34425.892,<br>
> 34250.443, 34252.127, 34266.757, 34273.928), X.1 = c(-1, -1,<br>
> 38.05, 38.06, 38.06, 38.04, 37.8, 37.8, 37.85, 37.85, -1, -1,<br>
> 38.85, 38.85), X.1.1 = c(-1L, -1L, 32L, 2L, 4L, 1L, 50L, 50L,<br>
> 1L, 1L, -1L, -1L, 1L, 1L), X.1.2 = c(-1, -1, 38.08, 38.08, 38.07,<br>
> 38.07, 38.3, 38.3, 37.95, 37.95, -1, -1, 38.95, 38.95), X.1.3 =<br>
> c(-1L,<br>
> -1L, 1L, 1L, 1L, 1L, 203L, 203L, 1L, 1L, -1L, -1L, 1L, 1L), X38 =<br>
> c(38,<br>
> 38, 38.05, 38.06, 38.06, 38.05, 37.9, 37.9, 37.9, 37.9, 38.9,<br>
> 38.9, 38.9, 38.9), X55900 = c(600L, 5000L, 6000L, 1500L, 500L,<br>
> 4500L, 161800L, 500L, 3700L, 1100L, 125000L, 1100L, 400L, 1000L<br>
> )), .Names = c("X37988", "X34244.059",
"X.1", "X.1.1", "X.1.2",<br>
> "X.1.3", "X38", "X55900"), class =
"data.frame", row.names = c(NA,<br>
> -14L))<br>
> ><br>
> > matriz<-matrix(NA,230,4)## numero de linhas é o numero de dias.<br>
> >
colnames(matriz)<-c("open","close","low","higth")<br>
> > i<-1<br>
> > for( x in 37988:38000){<br>
> +<br>
> +<br>
> + #x<-37988<br>
> +<br>
> + if(AA$data==x){<br>
> + AA1<-subset(AA,AA$data==x)<br>
> + matriz[i,1]<-AA1[1,7]<br>
> + matriz[i,2]<-AA1[nrow(AA1),7]<br>
> + matriz[i,3]<-min(AA1$last)<br>
> + matriz[i,4]<-max(AA1$last)<br>
> +<br>
> + i=i+1<br>
> + }<br>
> +<br>
> AA<-read.table("/Users/bau/Dropbox/AA.N_ExemploReduzido.csv",header=TRUE<br>
> +
,dec=".",<a href="http://as.is" target="_blank">as.is</a>=TRUE,
sep=",")<br>
> + #AA<br>
> + dput(AA)<br>
> +<br>
> + matriz<-matrix(NA,3,4)## numero de linhas é o numero de dias.<br>
> +
colnames(matriz)<-c("open","close","low","higth")<br>
> + i<-1<br>
> + for( x in 37988:37992){<br>
> +<br>
> +<br>
> +<br>
> +<br>
> + if(AA$data==x){<br>
> + AA1<-subset(AA,AA$data==x)<br>
> + matriz[i,1]<-AA1[1,7]<br>
> + matriz[i,2]<-AA1[nrow(AA1),7]<br>
> + matriz[i,3]<-min(AA1$last)<br>
> + matriz[i,4]<-max(AA1$last)<br>
> +<br>
> + i=i+1<br>
> + }<br>
> + }<br>
> + matriz<br>
> + write.table(matriz,"Matriz4ParametrosPreço.txt")<br>
> +<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal">> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e fornea cdigo mnimo
reproduzvel.<br>
<br>
<br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e fornea cdigo mnimo
reproduzvel.<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
<br><br>
<hr style="border:none;color:#909090;background-color:#b0b0b0;min-height:1px;width:99%">
<table style="border-collapse:collapse;border:none">
<tbody><tr>
<td style="border:none;padding:0px 15px 0px 8px">
<a href="https://www.avast.com/antivirus" target="_blank">
<img border="0" src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo">
</a>
</td>
<td>
<p style="color:#3d4d5a;font-family:"Calibri","Verdana","Arial","Helvetica";font-size:12pt">
Este email foi escaneado pelo Avast antivírus.
<br><a href="https://www.avast.com/antivirus" target="_blank">www.avast.com</a>
</p>
</td>
</tr>
</tbody></table>
<br>
</div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br></div></div>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>