filtrar

Filtros no R

Já falei várias vezes sobre como filtrar os dados no R (Excluindo linhas de uma tabela no R tem algo parecido), segue mais um exemplo:

## Filtrando apenas as linhas com a coluna mes igual a 3
## na tabela dados_modelo
dados_modelo[(dados_modelo$mes == 3),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4 ou 5
## na tabela dados_modelo
dados_modelo[dados_modelo$mes %in% c(3,4,5,6,7,8,9,10,11),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4, 5, ..., 10
dados_modelo[dados_modelo$mes %in% c(3:10),];

## Filtrando apenas as linhas com a coluna estado igual a SP
dados_modelo[dados_modelo$estado == "SP"),];
Anúncios

Excluindo linhas de uma tabela no R

Mais uma dica rápida que saiu enquanto eu fazia minha tese…

Estava preparando uma base de dados no R, quando vi que precisava excluir as linhas que tivesse o campo referente ao mês com valor igual a 1 ou igual a 5. Sempre fiz isso no SAS com um if bem simples, mas não lembrava no R, talvez já tenha feito aqui, mas quem lê o blog sabe que não é lá tão organizado. Enfim, a lógica no R é tão simples quanto a do SAS, mas não tão intuitiva (ao menos para mim). Veja o antes e depois de uma tabela chamada dados retirando as linhas nas quais o campo mes seja igual a 1 ou 5 e quais os códigos utilizar em algumas linguagens que já mencionamos aqui (é tão simples que vou colocar tudo junto mesmo):

excluir-linhas

No R com um indexador lógico (! indicando negação):

dados[dados$mes==5),];

No R com subset:

subset(dados, mes == 1 & mes == 5)

No SAS com data step:

data dados_v2;
    set dados;
    if mes ne 1 and mes ne 5; *ou if mes <> 1;
run;

No SAS com proc sql:

proc sql;
    create table dados_v2 as
    select * from
    dados where mes <> 1 and mes <> 5; 
run;

No SQL:

select * from dados where mes <> 1 and mes <> 5;