<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;">Dando continuidade ao problema. Agora eu preciso calcular os quantis 25, 50 e 75 e em seguida classificar todas as linhas de um data.frame usando condições. Vou continuar o exemplo do Rodrigo:</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"><br></div><div style="background-color: transparent;"><div style="background-color: transparent;">dados <- read.table(text='year month anom3_4</div><div style="background-color: transparent;">  1950     1   -1.50</div><div style="background-color: transparent;">  1950     2   -1.77</div><div style="background-color: transparent;">  1950     3   -0.73</div><div style="background-color:
 transparent;">  1950     4   -0.94</div><div style="background-color: transparent;">  1950     5   -1.47</div><div style="background-color: transparent;">  1950     6   -0.70</div><div style="background-color: transparent;">  1950     7   -0.48</div><div style="background-color: transparent;">  1950     8   -0.59</div><div style="background-color: transparent;">  1950     9   -1.09</div><div style="background-color: transparent;">  1950    10   -0.57</div><div style="background-color: transparent;">  1950    11   -1.09</div><div style="background-color: transparent;">  1950    12   -0.93</div><div style="background-color: transparent;">  1951     1   -1.04</div><div style="background-color: transparent;">  1951     2   -0.07</div><div
 style="background-color: transparent;">  1951     3   -0.70</div><div style="background-color: transparent;">  1951     4    0.05</div><div style="background-color: transparent;">  1951     5   -0.22</div><div style="background-color: transparent;">  1951     6    0.04</div><div style="background-color: transparent;">  1951     7    0.41</div><div style="background-color: transparent;">  1951     8    0.74</div><div style="background-color: transparent;">  1951     9    0.38</div><div style="background-color: transparent;">  1951    10    0.80</div><div style="background-color: transparent;">  1951    11    0.80</div><div style="background-color: transparent;">  1951    12    0.72', header=TRUE)</div><div
 style="background-color: transparent;"><br></div><div style="background-color: transparent;">dados2 <- dados[dados$month %in% c(9, 10, 11), ] # Pega só os 3 meses</div><div style="background-color: transparent;">dados3 <- with(dados2, aggregate(anom3_4, list(year=year), mean)) # Aplica a média por ano</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;"># Encontro os quantis 25, 50 e 75</div><div style="background-color: transparent;">p <- c(25,50,75)/100</div><div style="background-color: transparent;">q <- quantile(dados3$x, p)</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;">Agora, digamos que eu queria classificar cada linha do data.frame comparando-a com os quartis e criar uma nova coluna rotulada de acordo com o
 resultado. As condições são:</div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;">Se <span style="font-size: 16px;">dados3$x</span> for menor do que o quartil 25, dados3$class receberá LN</div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;">Se <span style="font-size: 16px;">dados3$x</span> for maior do que o quartil 75, dados3$class receberá EN<br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;">Se <span style="font-size:
 16px;">dados3$x</span> for maior ou igual ao quartil 25 E menor ou igual que o quartil 75, dados3$class receberá NEU<br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;"><span style="background-color: transparent;">O código seria algo como:</span><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;"><br></div><div style="background-color: transparent;"><div style="background-color: transparent;"># Classificar o data.frame dados3<br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman',
 'new york', times, serif; font-style: normal;">if (dados3$x<q[1]) dados3$class='LN'</div><div style="background-color: transparent;">if (dados3$x>q[3]) dados3$class='EN'</div><div style="background-color: transparent;">if (q[1]<=dados3$x & dados3$x<=q[3]) dados3$class='NEU'</div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 16px; font-style: normal;"><br></div></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal;">Mas ele não funciona. Talvez eu tivesse que aplicar essa condição linha a linha do data.frame dados3. Como fazer isso?</div></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> </div><div style="font-family: 'times new
 roman', 'new york', times, serif; font-size: 12pt;">Saudações,<br>--<br>Thiago V. dos Santos<br>PhD student<br>Land and Atmospheric Science<br>University of Minnesota<br>http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm<br>Phone: (612) 323 9898<br></div>  <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"> <b><span style="font-weight:bold;">From:</span></b> Rodrigo Coster <rcoster@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br> <br> <b><span style="font-weight: bold;">Sent:</span></b> Friday, May 24, 2013 3:03 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [R-br]
        Operação em data.frame com colunas 'numeric'<br> </font> </div> <div class="y_msg_container"><br><div id="yiv6854386648"><div dir="ltr">Qual a diferença de ser número ou fator? Os comandos (pelo menos do jeito que eu to pensando) são os mesmos.<div><br></div><div><div>dados <- read.table(text='year month anom3_4</div><div>  1950     1   -1.50</div>
<div>  1950     2   -1.77</div><div>  1950     3   -0.73</div><div>  1950     4   -0.94</div><div>  1950     5   -1.47</div><div>  1950     6   -0.70</div><div>  1950     7   -0.48</div><div>  1950     8   -0.59</div><div>
  1950     9   -1.09</div><div>  1950    10   -0.57</div><div>  1950    11   -1.09</div><div>  1950    12   -0.93</div><div>  1951     1   -1.04</div><div>  1951     2   -0.07</div><div>  1951     3   -0.70</div><div>  1951     4    0.05</div>
<div>  1951     5   -0.22</div><div>  1951     6    0.04</div><div>  1951     7    0.41</div><div>  1951     8    0.74</div><div>  1951     9    0.38</div><div>  1951    10    0.80</div><div>  1951    11    0.80</div><div>
  1951    12    0.72', header=TRUE)</div><div><br></div><div>dados_dois <- dados[dados$month %in% c(9, 10, 11), ] # Pega só os 3 meses</div><div>with(dados_dois, aggregate(anom3_4, list(year=year), mean)) # Aplica a média por ano</div>
</div></div><div class="yiv6854386648gmail_extra"><br><br><div class="yiv6854386648gmail_quote">2013/5/24 Thiago V. dos Santos <span dir="ltr"><<a rel="nofollow" ymailto="mailto:thi_veloso@yahoo.com.br" target="_blank" href="mailto:thi_veloso@yahoo.com.br">thi_veloso@yahoo.com.br</a>></span><br><blockquote class="yiv6854386648gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Olá pessoal,<br>
<br>
Estou com uma dúvida bem básica no R. Tenho um data.frame que contem anos e meses no formato numérico e gostaria de realizar algumas operações nesse DF. Vejam abaixo:<br>
<br>
   year month anom3_4<br>
  1950     1   -1.50<br>
  1950     2   -1.77<br>
  1950     3   -0.73<br>
  1950     4   -0.94<br>
  1950     5   -1.47<br>
  1950     6   -0.70<br>
  1950     7   -0.48<br>
  1950     8   -0.59<br>
  1950     9   -1.09<br>
  1950    10   -0.57<br>
  1950    11   -1.09<br>
  1950    12   -0.93<br>
  1951     1   -1.04<br>
  1951     2   -0.07<br>
  1951     3   -0.70<br>
  1951     4    0.05<br>
  1951     5   -0.22<br>
  1951     6    0.04<br>
  1951     7    0.41<br>
  1951     8    0.74<br>
  1951     9    0.38<br>
  1951    10    0.80<br>
  1951    11    0.80<br>
  1951    12    0.72<br>
<br>
Gostaria, inicialmente, de manter somente os meses 9, 10 e 11 de cada ano (no caso, 1950 e 1951). Em seguida, gostaria de calcular a média da coluna anom3_4 em cada ano. <br>
<br>
Se as colunas year e month estivessem como factor, seria fácil fazer isso. Mas acho que não dá para criar factor a partir de numerics.<br>
<br>
Sugestões de linhas mágicas para fazer isso?<br>
<br>
Obrigado,<br>
--<br>
Thiago V. dos Santos<br>
PhD student<br>
Land and Atmospheric Science<br>
University of Minnesota<br>
<a rel="nofollow" target="_blank" href="http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm">http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm</a><br>
Phone: <a rel="nofollow" href="">(612) 323 9898</a> <br>
_______________________________________________<br>
R-br mailing list<br>
<a rel="nofollow" ymailto="mailto:R-br@listas.c3sl.ufpr.br" target="_blank" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a rel="nofollow" target="_blank" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a rel="nofollow" target="_blank" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br>
</blockquote></div><br></div></div><br>_______________________________________________<br>R-br mailing list<br><a ymailto="mailto:R-br@listas.c3sl.ufpr.br" 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" 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 forneça código mínimo reproduzível.<br><br></div> </div> </div>  </div></body></html>