[R-br] Filtro em massa (subset)

Vinicius Brito Rocha viniciusbritor em gmail.com
Segunda Julho 25 19:57:21 BRT 2011


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 <
joseclaudio.faria em gmail.com> 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
> <joseclaudio.faria em gmail.com> 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
> > <viniciusbritor em gmail.com> 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
> >> 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.
>



-- 
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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110725/5876574d/attachment.html>


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