<div dir="ltr">Tente assim:<div><br></div><div><div># Media por ano</div><div>dados3 <- aggregate(anom3_4 ~ year, dados, subset = month %in% 9:11, FUN = mean)</div><div><br></div><div># classificar</div><div>with(dados3, cut(anom3_4, c(-Inf, quantile(anom3_4, 1:3/4), Inf), labels = c("LN", "LN", "EN", "NEU")))</div>
<div><span class="" style="white-space:pre"> </span></div></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/24 Thiago V. dos Santos <span dir="ltr"><<a href="mailto:thi_veloso@yahoo.com.br" target="_blank">thi_veloso@yahoo.com.br</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><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><div class="h5"><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></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="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">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="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">
Se <span style="font-size:16px">dados3$x</span> for menor do que o quartil 25, dados3$class receberá LN</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">
Se <span style="font-size:16px">dados3$x</span> for maior do que o quartil 75, dados3$class receberá EN<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">
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="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif"><span style="background-color:transparent">O código seria algo como:</span><br>
</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif"><br></div><div style="background-color:transparent"><div style="background-color:transparent">
# Classificar o data.frame dados3<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">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="font-style:normal;font-size:16px;font-family:'times new roman','new york',times,serif">
<br></div></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:'times new roman','new york',times,serif">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>Saudações,<div class="im">
<br>--<br>Thiago V. dos Santos<br>PhD student<br>Land and Atmospheric Science<br>University of Minnesota<br><a href="http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm" target="_blank">http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm</a><br>
Phone: (612) 323 9898<br></div></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 class="im"> <div dir="ltr"> <hr size="1"> <font face="Arial"> <b><span style="font-weight:bold">From:</span></b> Rodrigo Coster <<a href="mailto:rcoster@gmail.com" target="_blank">rcoster@gmail.com</a>><br> <b><span style="font-weight:bold">To:</span></b> "<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>" <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>> <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><div><div class="h5"><div><br><div><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><br><br><div>2013/5/24 Thiago V. dos Santos <span dir="ltr"><<a rel="nofollow" href="mailto:thi_veloso@yahoo.com.br" target="_blank">thi_veloso@yahoo.com.br</a>></span><br><blockquote 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" href="http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm" target="_blank">http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm</a><br>
Phone: <a rel="nofollow">(612) 323 9898</a> <br>
_______________________________________________<br>
R-br mailing list<br>
<a rel="nofollow" href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a rel="nofollow" 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 rel="nofollow" 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>
</blockquote></div><br></div></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" 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> </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" 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></blockquote></div><br><br clear="all"><div><br></div>-- <br>
Henrique Dallazuanna<br>Curitiba-Paraná-Brasil<br>25° 25' 40" S 49° 16' 22" O
</div>