Vinicius, tenta assim:

subset(dados,dados$z %in% filtro,drop=F)




2011/7/25 Vinicius Brito Rocha <viniciusbritor@gmail.com>
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@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@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@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@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@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.



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