se quiser encurtar um pouco mais: subset(dados, z %in% filtro)
2011/7/26 Rodrigo Coster <[email protected]>: > Vinicius, tenta assim: > subset(dados,dados$z %in% filtro,drop=F) > > > > 2011/7/25 Vinicius Brito Rocha <[email protected]> >> >> Esse é o problema, >> >> não quero ter que escrever todas as retrições. Uma vez que as mesmas estão >> armazenadas em uma variável gostaria de saber se é possível algo do tipo: >> >> x=rnorm(100) >> y=rpois(100,lamb=2) >> z=as.factor(sample(c("A","B","C","D"),size=100,replace=T)) >> >> dados=data.frame(x,y,z) >> >> >> # filtros >> filtro=as.factor(c("A","B","C")) >> >> # algo parecido com isso >> subset(dados,dados$z==filtro,drop=F) >> # não quero ter que escrever todas as restriçoes: >> subset(dados,dados$z=="A"| >> dados$z=="B"|dados$z=="C" >> ,drop=F) >> >> >> Tem como? >> >> Abs >> >> >> Em 25 de julho de 2011 19:01, Jose Claudio Faria >> <[email protected]> escreveu: >>> >>> Em relação ao email anterior, usando a distância interquartílica, >>> ficaria algo assim: >>> >>> dadf <- na.omit(dad) >>> >>> dadf <- subset(dadf, >>> Idade < median(dadf[,1]) + >>> 2.5*(quantile(dadf[,1])[4] - >>> quantile(dadf[,1])[2]) & >>> Idade > median(dadf[,1]) - >>> 2.5*(quantile(dadf[,1])[4] - >>> quantile(dadf[,1])[2]) & >>> Tempo < median(dadf[,2]) + >>> 2.5*(quantile(dadf[,2])[4] - >>> quantile(dadf[,2])[2]) & >>> Tempo > median(dadf[,2]) - >>> 2.5*(quantile(dadf[,2])[4] - >>> quantile(dadf[,2])[2])) >>> >>> E você pode ir adicionando outros critérios nesse mesmo subset ou em >>> subsequentes, para não ficar muito complexo. >>> >>> Dá um trabalhinho, sem dúvida, mas você sabe exatamente o que está >>> fazendo. >>> Adicionalmente, evita gastar muito tempo em busca de possíveis pacotes >>> e estudo da documentação. >>> >>> Abs, >>> -- >>> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ >>> Jose Claudio Faria >>> Estatistica - Prof. Pleno >>> UESC/DCET/Brasil >>> joseclaudio.faria at gmail.com >>> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ >>> >>> >>> Em 25 de julho de 2011 18:38, Jose Claudio Faria >>> <[email protected]> escreveu: >>> > Vinicius, >>> > >>> > A função subset é bem flexível e permite elevado nível de customização. >>> > Geralmente uso ela para crítica dos dados, antecedendo análises. >>> > Não seria interessante para você? >>> > >>> > Por exemplo: >>> > >>> > # gerando um data.frame com outliers >>> > Idade <- c(NA, -10, rnorm(1e2, m=30, sd=2), 150) >>> > Tempo <- c(rnorm(1e2, m=10, sd=1), NA, -50, 1e3) >>> > dad <- data.frame(Idade, Tempo) >>> > >>> > str(dad) >>> > >>> > # verificar outliers >>> > boxplot(dad, range=2.5) >>> > >>> > # remoção de todas as linhas contendo NA >>> > dadf <- na.omit(dad) >>> > >>> > # remoção das linhas de forma mais criteriosa >>> > dadf <- subset(dadf, >>> > Idade < 2.5*(median(dadf[, 1])) & >>> > Idade > 0 & >>> > Tempo < 2.5*(median(dadf[, 2])) & >>> > Tempo > 0) >>> > str(dadf) >>> > boxplot(dadf, range=2.5) # verificar remoção de outiliers >>> > >>> > Usei 2.5*mediana apenas por simpicidade didática. >>> > Você poderia usar um critério mais consistente, por exemplo, um >>> > múltiplo (1.5 a 2.5) da distância interquartílica. >>> > >>> > Veja com calcular os quatis no R coma função quantile: >>> >> ?quantile >>> > >>> > Abs, >>> > -- >>> > ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ >>> > Jose Claudio Faria >>> > Estatistica - Prof. Pleno >>> > UESC/DCET/Brasil >>> > joseclaudio.faria at gmail.com >>> > ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ >>> > >>> > >>> > >>> > Em 25 de julho de 2011 10:45, Vinicius Brito Rocha >>> > <[email protected]> escreveu: >>> >> Srs, >>> >> >>> >> tenho uma data.frame onde preciso realizar um filtro do mesmo, a >>> >> partir de >>> >> uma das variáveis categóricas. Porém tenho uma lista de restrições >>> >> dessa >>> >> variável à filtrar. >>> >> Escrever uma a uma cada restrição dará muito trabalho. >>> >> >>> >> Alguém sabe como posso fazer isso de forma mais inteligente? >>> >> >>> >> Abs >>> >> >>> >> -- >>> >> Vinicius Brito Rocha. >>> >> Estatístico e Atuário, >>> >> Mestre em Pesquisa Operacional >>> >> >>> >> www.aplicademic.blogspot.com >>> >> http://twitter.com/viniciusbritor >>> >> >>> >> "Não se preocupe muito com as suas dificuldades em Matemática, posso >>> >> assegurar-lhe que as minhas são ainda maiores." - Albert Einstein. >>> >> >>> >> >>> >> >>> >> _______________________________________________ >>> >> 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. >> >> >> >> -- >> Vinicius Brito Rocha. >> Estatístico e Atuário, >> Mestre em Pesquisa Operacional >> >> www.aplicademic.blogspot.com >> http://twitter.com/viniciusbritor >> >> "Não se preocupe muito com as suas dificuldades em Matemática, posso >> assegurar-lhe que as minhas são ainda maiores." - Albert Einstein. >> >> >> >> _______________________________________________ >> 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. > -- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins) _______________________________________________ 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.
