
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@leg.ufpr.br> Para: R-br Lista <r-br@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@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.