[R-br] Uso do ifelse

Edson Lira edinhoestat em yahoo.com.br
Sexta Dezembro 16 14:34:31 BRST 2011


prof Paulo, o qe estou fazendo errado?


A variável em análise é o percentual de gordura (inteira)

av$p_g<-ifelse(av$sexo=="masculino",
+                     cut(av$perc_g, brM, RES, inc=T, right=F, ord=T),
+                     cut(av$perc_g, brF, RES, inc=T, right=F, ord=T))  
> av$classi <- factor(av$classi, lev=1:5, lab=RES, ord=T)
Erro em `$<-.data.frame`(`*tmp*`, "classi", value = integer(0)) : 
  replacement has 0 rows, data has 174


 
Edson Lira
Estatístico
Manaus-Amazonas


________________________________
 De: Paulo Justiniano <paulojus em leg.ufpr.br>
Para: "r-br em listas.c3sl.ufpr.br" <r-br em listas.c3sl.ufpr.br> 
Enviadas: Sexta-feira, 16 de Dezembro de 2011 7:02
Assunto: Re: [R-br] Uso do ifelse
 
Edson

de fato, o seu critério de classificação é diferente para cada sexo.
MNas voce ainda pode user o cut dentro do ifelse
veja este exemplo com breaks diferentes para M e F

df <- data.frame(sexo=rep(c("M", "F"), each=10), dados=round(runif(20), dig=2))
brM <- c(0, 0.2, 0.5, 0.8, 1)
brF <- c(0, 0.1, 0.3, 0.6, 1)
RES <- c("Baixo", "Medio", "Alto", "Muito alto")
df$classi <- ifelse(df$sexo == "M",
                        cut(df$dados, brM, RES, inc=T, right=F, ord=T),
                        cut(df$dados, brF, RES, inc=T, right=F, ord=T))
df$classi <- factor(df$classi, lev=1:4, lab=RES, ord=T)
df

   sexo dados     classi
1     M  0.54       Alto
2     M  0.56       Alto
3     M  0.45      Medio
4     M  0.59       Alto
5     M  1.00 Muito alto
6     M  0.71       Alto
7     M  0.02      Baixo
8     M  0.83 Muito alto
9     M  0.22      Medio
10    M  0.80 Muito alto
11    F  0.52       Alto
12    F  0.59       Alto
13    F  0.47       Alto
14    F  0.72 Muito alto
15    F  0.08      Baixo
16    F  0.71 Muito alto
17    F  0.19      Medio
18    F  0.32       Alto
19    F  0.09      Baixo
20    F  0.17      Medio






On Thu, 15 Dec 2011, Edson Lira wrote:

> Prof. Paulo, o cut seria a saida, se fosse feito por estrato (masculino e feminino), mas não é o caso, preciso fazer
> no mesmo banco a análise para masculino e feminino.
> 
> Veja os comandos abaixo:
> 
> av$pg_f<-ifelse(av$sexo=="masculino",
>          ifelse(av$perc_g<=15&av$perc_g<20),"normal",""),
> 
>           ifelse(av$perc_g<=20&av$perc_g<25),"mod obeso",""),
> 
>           ifelse(av$perc_g<=25&av$perc_g<30),"exc obeso",""),
>  
>           ifelse(av$perc_g<=10&av$perc_g<15),"ideal",""),
> 
>           ifelse(av$perc_g<=0&av$perc_g<10),"essencial",""),
> 
>          ifelse(av$sexo=="feminino",
> 
>           ifelse(av$perc_g<=25&av$perc_g<30),"normal",""),
> 
>           ifelse(av$perc_g<=30&av$perc_g<35),"mod obeso",""),
> 
>           ifelse(av$perc_g<=35&av$perc_g<40),"exc obeso",""),
>  
>           ifelse(av$perc_g<=14&av$perc_g<18),"ideal",""),
> 
>           ifelse(av$perc_g<=0&av$perc_g<14),"essencial","")
> 
>         ))
> O que pode estar errado?
> Edson Lira
> Estatístico
> Manaus-Amazonas
> 
> ____________________________________________________________________________________________________________________
> De: Paulo Justiniano <paulojus em leg.ufpr.br>
> Para: R-br Lista <r-br em listas.c3sl.ufpr.br>
> Enviadas: Quinta-feira, 15 de Dezembro de 2011 9:50
> Assunto: Re: [R-br] Uso do ifelse
> 
> Edson
> nao vi seu dados e codigos mas, se entendi voce quer cricar as caterorias a partir de dados origineis
> 
> cut() parce ser a solução:
> 
> > x
> [1] 0.04762629 0.68057869 0.82633911 0.74263816 0.18047177 0.76626677
> [7] 0.49187248 0.43507250 0.18670542 0.95927841 0.62133031 0.62823814
> [13] 0.45227403 0.53154416 0.98763860 0.32339100 0.63901674 0.35742343
> [19] 0.64453429 0.43150140
> > cut(x, br=c(0, 0.2, .5, 0.8, 1), lab=c("baixo", "medio", "alto", "muito
> alto"))
> [1] baixo      alto      muito alto alto      baixo      alto
> [7] medio      medio      baixo      muito alto alto      alto
> [13] medio      alto      muito alto medio      alto      medio
> [19] alto      medio
> Levels: baixo medio alto muito alto
> 
> 
> On Thu, 15 Dec 2011, Edson Lira wrote:
> 
> > R-istas, estou com um problema no uso do ifelse (Elias, finalmente postei o CMR).
> >
> > Tenho dois problemas:
> >
> > 1. ao avaliar percentual de gordura em homens e mulheres, temos os seguintes parâmetros
> >  
> > Para Homens
> >     15|-20 =  Limite normal
> >     20|-25 =  Moderadamente obeso
> >     25|-30 =  Excessivamente obeso
> >     10|-14 =  Gordura ideal
> >         03 =  Gordura essencial
> >  
> > Para Mulheres
> >     25|-30 =  Limite normal
> >     30|-35 =  Moderadamente obeso
> >     35|-40 =  Excessivamente obeso
> >     14|-18 =  Gordura ideal
> >         12 =  Gordura essencial
> >
> > Como fazê-lo sem criar subcojunto de homens e mulheres usando o ifelse? No banco as variáveis são sexo e perc_g.
> >
> >
> > 2. Foi medido a pressão sitólica e distólica de um grupo, tenho os seguintes parâmetros ( que me foram passados):
> >
> > sistólica       diastólica      categoria
> > <130               <85            normal
> > 130-139           85-89           normal limítrofe
> > 140-159           90-99           estágio 1
> > 160-179          100-109          estágio 2
> > >180               >110           estágio 3
> > >=210              >=120          estágio 4
> > <140               <90            hipert sist isolada
> > Como fazê-lo usando o ifelse?
> >
> > No endereço abaixo postei uma parte do banco de dados e o scritp que
> > tentei implementar, mas não conseGui rodá-lo.
> >
> >
> > https://gist.github.com/1481221 OU
> > git://gist.github.com/1481221.git
> >
> >
> >
> > []'s.
> > Edson Lira
> > Estatístico
> > Manaus-Amazonas
> >
> >
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> 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
R-br em listas.c3sl.ufpr.br
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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20111216/78ff98e8/attachment.html>


Mais detalhes sobre a lista de discussão R-br