Excluindo linhas de um dataset no R

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

Estava tratando um conjunto de dados no R, quando vi que precisava excluir as linhas que tivessem 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 s 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):

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

dados[(dados$mes!=5 & dados$mes!=1),];

Ou então com um subset:

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

Da forma que escrevemos acima, você vai obter uma nova tabela, mas ela não está sendo salva com nome algum. Se você quiser, pode facilmente criar uma nova, como a tabela_nova que criamos no exemplo a seguir:

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

Se você quiser ver como é no SAS, aqui vai um exemplo com data step:

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

E agora, um exemplo com proc sql:

PROC SQL;
    CREATE TABLE dados_v2 AS
    SELECT * FROM dados WHERE mes <> 1 AND mes <> 5; 
RUN;

Se quiser fazer no SQL:

SELECT * FROM dados WHERE mes <> 1 and mes <> 5;
E aí, curtiu o post?

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.

Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!

BONS ESTUDOS!

0 comentários em “Excluindo linhas de um dataset no R”

  1. Tem alguma forma de criar um novo banco de dados somente com as observações que contem o mês 5 (sem ser retirando as observações com mês 1,2,3,4)?

      1. Opa, valeu. E caso eu quisesse mais de um tipo de observação ficasse, como faria?

        Tentei com:
        tabela_nova = tabela_antiga[(tabela_antiga$mes == 5, 6),]
        Mas não funcionou…

        1. Faz assim:

          tabela_nova = tabela_antiga[(tabela_antiga$mes = 5 & tabela_antiga$mes = 6),]

          Ou usa o exemplo do subset, só que usando ‘==’ ao invés de ‘!=’

  2. Então, Yukio. Acredito que o subset será o melhor método mesmo então…

    Porque dessa última forma “tabela_nova = tabela_antiga[(tabela_antiga$mes = 5 & tabela_antiga$mes = 6),]”, ele dá um erro… Mas mesmo assim, agradeço a ajuda!! Att.

      1. Então, aqui na realidade ele funciona, mas não cria um banco novo com as observações certas.

        Ele cria com elas aleatórias… No exemplo seu, estariam todos os meses 1, 2, 3… no banco de dados, mesmo eu selecionando apenas o 2 e 3.

        Assim da erro: tabela_nova = tabela_antiga[(tabela_antiga$mes = 5 & tabela_antiga$mes = 6),]

        Assim fica da forma que mencionei: tabela_nova = tabela_antiga[(tabela_antiga$mes!=5 & tabela_antiga$mes!=6),]

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *