Obrigado Henrique,

Funcionou como uma brisa. Mas uma mensagem de aviso é emitida no final (ver 
abaixo). É possível evita-la ou não devo me preocupar?

-----------------------------------------------------------------------
dados <- read.table(text='year month anom3_4
  1950     1   -1.50
  1950     2   -1.77
  1950     3   -0.73
  1950     4   -0.94
  1950     5   -1.47
  1950     6   -0.70
  1950     7   -0.48
  1950     8   -0.59
  1950     9   -1.09
  1950    10   -0.57
  1950    11   -1.09
  1950    12   -0.93
  1951     1   -1.04
  1951     2   -0.07
  1951     3   -0.70
  1951     4    0.05
  1951     5   -0.22
  1951     6    0.04
  1951     7    0.41
  1951     8    0.74
  1951     9    0.38
  1951    10    0.80
  1951    11    0.80
  1951    12    0.72', header=TRUE)

# Media por ano
dados3 <- aggregate(anom3_4 ~ year, dados, subset = month %in% 9:11, FUN = mean)

# classificar
dados3$class <- with(dados3, cut(anom3_4, c(-Inf, quantile(anom3_4, 1:3/4), 
Inf), labels = c("LN", "LN", "EN", "NEU")))
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else 
paste0(labels,  :
  duplicated levels in factors are deprecated

dados3
 year    anom3_4 class
1 1950 -0.9166667    LN
2 1951  0.6600000   NEU
-----------------------------------------------------------------------

 

Saudações,
--
Thiago V. dos Santos
PhD student
Land and Atmospheric Science
University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
Phone: (612) 323 9898


________________________________
 From: Henrique Dallazuanna <[email protected]>
To: [email protected]; Thiago V. dos Santos <[email protected]> 
Sent: Friday, May 24, 2013 5:58 PM
Subject: Re: [R-br] Operação em data.frame com colunas 'numeric'
 


Tente assim:

# Media por ano
dados3 <- aggregate(anom3_4 ~ year, dados, subset = month %in% 9:11, FUN = mean)

# classificar
with(dados3, cut(anom3_4, c(-Inf, quantile(anom3_4, 1:3/4), Inf), labels = 
c("LN", "LN", "EN", "NEU")))




2013/5/24 Thiago V. dos Santos <[email protected]>

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:
>
>
>dados <- read.table(text='year month anom3_4
>  1950     1   -1.50
>  1950     2   -1.77
>  1950     3   -0.73
>  1950     4   -0.94
>  1950     5   -1.47
>  1950     6   -0.70
>  1950     7   -0.48
>  1950     8   -0.59
>  1950     9   -1.09
>  1950    10   -0.57
>  1950    11   -1.09
>  1950    12   -0.93
>  1951     1   -1.04
>  1951     2   -0.07
>  1951     3   -0.70
>  1951     4    0.05
>  1951     5   -0.22
>  1951     6    0.04
>  1951     7    0.41
>  1951     8    0.74
>  1951     9    0.38
>  1951    10    0.80
>  1951    11    0.80
>  1951    12    0.72', header=TRUE)
>
>
>dados2 <- dados[dados$month %in% c(9, 10, 11), ] # Pega só os 3 meses
>dados3 <- with(dados2, aggregate(anom3_4, list(year=year), mean)) # Aplica a 
>média por ano
>
>
># Encontro os quantis 25, 50 e 75
>p <- c(25,50,75)/100
>q <- quantile(dados3$x, p)
>
>
>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:
>
>
>Se dados3$x for menor do que o quartil 25, dados3$class receberá LN
>Se dados3$x for maior do que o quartil 75, dados3$class receberá EN
>
>Se dados3$x for maior ou igual ao quartil 25 E menor ou igual que o quartil 
>75, dados3$class receberá NEU
>
>
>
>O código seria algo como:
>
>
>
># Classificar o data.frame dados3
>
>if (dados3$x<q[1]) dados3$class='LN'
>if (dados3$x>q[3]) dados3$class='EN'
>if (q[1]<=dados3$x & dados3$x<=q[3]) dados3$class='NEU'
>
>
>Mas ele não funciona. Talvez eu tivesse que aplicar essa condição linha a 
>linha do data.frame dados3. Como fazer isso?
> 
>Saudações,
>
>--
>Thiago V. dos Santos
>PhD student
>Land and Atmospheric Science
>University of Minnesota
>http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
>Phone: (612) 323 9898
>
>
>________________________________
> From: Rodrigo Coster <[email protected]>
>To: "[email protected]" <[email protected]> 
>Sent: Friday, May 24, 2013 3:03 PM
>Subject: Re: [R-br] Operação em data.frame com colunas 'numeric'
> 
>
>
>Qual a diferença de ser número ou fator? Os comandos (pelo menos do jeito que 
>eu to pensando) são os mesmos.
>
>
>dados <- read.table(text='year month anom3_4
>  1950     1   -1.50
>  1950     2   -1.77
>  1950     3   -0.73
>  1950     4   -0.94
>  1950     5   -1.47
>  1950     6   -0.70
>  1950     7   -0.48
>  1950     8   -0.59
>  1950     9   -1.09
>  1950    10   -0.57
>  1950    11   -1.09
>  1950    12   -0.93
>  1951     1   -1.04
>  1951     2   -0.07
>  1951     3   -0.70
>  1951     4    0.05
>  1951     5   -0.22
>  1951     6    0.04
>  1951     7    0.41
>  1951     8    0.74
>  1951     9    0.38
>  1951    10    0.80
>  1951    11    0.80
>  1951    12    0.72', header=TRUE)
>
>
>dados_dois <- dados[dados$month %in% c(9, 10, 11), ] # Pega só os 3 meses
>with(dados_dois, aggregate(anom3_4, list(year=year), mean)) # Aplica a média 
>por ano
>
>
>
>2013/5/24 Thiago V. dos Santos <[email protected]>
>
>Olá pessoal,
>>
>>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:
>>
>>   year month anom3_4
>>  1950     1   -1.50
>>  1950     2   -1.77
>>  1950     3   -0.73
>>  1950     4   -0.94
>>  1950     5   -1.47
>>  1950     6   -0.70
>>  1950     7   -0.48
>>  1950     8   -0.59
>>  1950     9   -1.09
>>  1950    10   -0.57
>>  1950    11   -1.09
>>  1950    12   -0.93
>>  1951     1   -1.04
>>  1951     2   -0.07
>>  1951     3   -0.70
>>  1951     4    0.05
>>  1951     5   -0.22
>>  1951     6    0.04
>>  1951     7    0.41
>>  1951     8    0.74
>>  1951     9    0.38
>>  1951    10    0.80
>>  1951    11    0.80
>>  1951    12    0.72
>>
>>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. 
>>
>>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.
>>
>>Sugestões de linhas mágicas para fazer isso?
>>
>>Obrigado,
>>--
>>Thiago V. dos Santos
>>PhD student
>>Land and Atmospheric Science
>>University of Minnesota
>>http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
>>Phone: (612) 323 9898 
>>_______________________________________________
>>R-br mailing list
>>[email protected]
>>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
>[email protected]
>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
>[email protected]
>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.
>


-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O 
_______________________________________________
R-br mailing list
[email protected]
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.

Responder a