[R-br] Filtro em massa (subset)

Jose Claudio Faria joseclaudio.faria em gmail.com
Segunda Julho 25 19:01:41 BRT 2011


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.
>


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