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.