[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