Post

5 maneiras de filtrar os seus dados no R

5 maneiras de filtrar os seus dados no R

Nesse post você vai aprender 5 formas diferentes de como filtrar os dados da sua tabela no R.

São várias as razões que você pode precisar filtrar os seus dados em uma análise de dados:

  • Visualizar as 50 primeiras linhas da sua tabela
  • Visualizar todos os registros que possuem um determinado valor para a variável X
  • Excluir todos os registros que tenham a variável Y igual a 2, por exemplo…
  • Ou até mesmo buscar uma amostra aleatória dos seus dados.

Porém, alguns métodos são mais adequados que os outros, dependendo do seu objetivo.

Então, vou falar aqui todas as 5 maneiras e quando usar cada uma delas.

Em nossos exemplos, vou usar o dataset iris que já é carregado automaticamente no R.

Filtro de dados pelas linhas e colunas

Essa a é a forma mais simples de selecionar dados do seu dataset. E, na minha opinião, deve ser usada com muita cautela.

O nosso dataset se chama iris, então quando escrevemos o comando

subset_iris1<-iris[1:30,]

estamos selecionando as linhas de 1 a 30 do dataset iris.

Quando abrimos os colchetes depois do dataset, temos dois campos separados pela vírgula. Informamos quais as linhas que queremos selecionar antes da vírgula.

Depois da vírgula informamos quais as colunas queremos selecionar. Como deixei em branco, o R irá retornar todas as colunas do dataset.

Agora, se eu colocar o comando

subset_iris1<-iris[,c(1,3,5)]

O R irá retornar todas as linhas do dataset iris (pois o campo antes da vírgula está vazio) e irá selecionar as colunas 1, 3 e 5, pois essas foram as colunas que eu coloquei no vetor das colunas.

Você também pode combinar os critérios das linhas e colunas ao mesmo tempo. Desta forma, é possível até escolher até um único elemento contido na tabela. Por exemplo:

Caso você deseje saber qual o valor da 90ª linha para a coluna 5, o comando será o seguinte:

subset_iris1<-iris[90,5]

Mas porque eu disse que o método deve ser usado com cautela?

Porque, como você viu, ele é extremamente manual. Então, será útil caso você precise pesquisas ou explorações isoladas.

Mas, de forma alguma, recomendo que você use esse método para fazer alterações no seu banco de dados que precisem ser generalizadas para todos os dados.

Excluir dados pelas linhas e colunas

Para excluir determinadas linhas ou colunas, vamos usar o mesmo raciocínio do item anterior.

Vamos colocar o nome do dataset e os colchetes. Dentro dos colchetes iremos colocar na mesma ordem: primeiro as linhas e depois da vírgula colocamos as colunas.

Porém, como queremos excluir as linhas/colunas, iremos colocar um sinal de “-” antes dos números.

Por exemplo, se queremos excluir as linhas 10, 11 e 12 do dataset e excluir a coluna 4, o comando será:

subset_iris2<-iris[-(10:12),-4]

E, da mesma forma, se queremos excluir linhas e colunas salteadas, colocamos os números dentro da função de vetor c().

subset_iris2<-iris[-c(10,50,90),-c(1,3)]

Então, o comando acima retornou o dataset iris sem as linhas 10, 50 e 90 e também excluiu as colunas 1 e 3.

Filtro de dados combinando a função which()

Esse método, assim como os seguintes, já podem ser usados em grandes bases de dados de forma segura. Mesmo que você não veja ou conheça todas as linhas da tabela.

O filtro se aplicará por uma condição que vamos estabelecer.

Antes de aplicar o filtro, vou explicar rapidamente como funciona a lógica da função which().

A função which() irá retornar um vetor com o número das linhas que atendem a condição que você estabeleceu.

Por exemplo:

which(iris$Sepal.Length>6)
##  [1]  51  52  53  55  57  59  64  66  69  72  73  74  75  76  77  78  87  88  92
## [20]  98 101 103 104 105 106 108 109 110 111 112 113 116 117 118 119 121 123 124
## [39] 125 126 127 128 129 130 131 132 133 134 135 136 137 138 140 141 142 144 145
## [58] 146 147 148 149

O comando acima irá retornar todas as linhas do dataset iris que possuem um valor maior que 6 para a coluna Sepal.Length.

Se o comando irá retornar um vetor com todas as linhas que queremos escolher, podemos adaptar a função _which() no 1º método falado aqui e selecionar as linhas que precisamos.

Ou seja:

subset_iris3<-iris[which(iris$Sepal.Length>6),]

Filtro de dados usando a função subset()

Você vai perceber que a função subset() é bem intuitiva. Ela só precisa de 3 argumentos.

  • O primeiro argumento que você irá colocar na função é o nome do dataset.

  • Depois, você irá colocar a condição para cada linha que será filtrada.

  • E, por último, quais as colunas que devem permanecer no dataset que você está criando.

Vamos supor que a gente deseje montar um novo dataset chamado “setosa”.

Nele, vamos filtrar apenas os registros do dataset iris que tenham a variável “Species” igual a “setosa”.

Vou escolher também só as 3 primeiras colunas para o meu novo dataset.

setosa_dataset<-subset(iris,Species=="setosa",select = c("Sepal.Length","Sepal.Width","Petal.Length"))

OU

setosa_dataset<-subset(iris,Species=="setosa",1:3)

Caso você não queira excluir nenhuma coluna, não coloque o último argumento:

setosa_dataset<-subset(iris,Species=="setosa")

Filtrar usando a função filter() e select()

As funções filter e select fazem parte da biblioteca dplyr.

Esse pacote é essencial para manipulação de dados. Então, se você ainda tem ele no R, baixe agora mesmo usando o comando:

install.packages("dplyr")

Para carregar o pacote, você precisar rodar o comando library(dplyr)

É importante saber que você irá usar o comando “filter” para filtrar as LINHAS e o comando “select” para selecionar as COLUNAS.

  • Função filter()

Você precisa informar duas coisas para a função: -> Quais os dados você deseja usar (sua tabela) -> Quais as condições para filtrar os dados

Vamos filtrar aqui novamente de acordo com a variável “Species” do dataset iris.

Agora vou filtrar todos os registros da espécie “virginica”.

library(dplyr)
virginica_dataset<-filter(iris,Species=="virginica")

Bem simples! Mas e se a gente quiser combinar mais de uma condição?

Nesse caso, podemos usar dois operadores lógicos para combinar as condições: E e OU.

Caso a gente precise que as duas condições aconteçam ao mesmo tempo, usaremos a condição E (representada pelo &)

Caso a gente precise que aconteça uma condição OU a outra, usaremos a condição OU (representada pelo |) - nesse caso, só excluiremos caso não aconteça nenhuma das duas condições.

Vamos supor que precisamos filtrar os registros da espécie “versicolor” e que tenham a variável “Sepal.Length” maior que 6.

library(dplyr)
versicolor_dataset<-filter(iris,Species=="versicolor" & Sepal.Length>6)
  • Função select()

A função select é muito útil para escolher quais as colunas iremos manter em nosso dataset.

Assim como a função filter(), ela só precisa de dois argumentos.

O primeiro argumento também será o dataset que você irá selecionar as colunas.

O segundo argumento é a coluna que deseja selecionar. Claro que você pode querer selecionar várias colunas, não tem problema. Veja só:

Vamos selecionar as colunas Sepal.Length e Species do dataset iris.

library(dplyr)
select_dataset<-select(iris,Sepal.Length,Species)

Então esse comando irá salvar no “select_dataset” todas as linhas do dataset iris, mas apenas as colunas que você selecionou.

Espero que essas 5 formas de filtrar as linhas e colunas de seus datasets sejam bem úteis na sua manipulação dos dados e até a próxima! :)

Receba nosso conteúdo exclusivo

Faça parte do nosso grupo exclusivo e receba as novidades mais interessantes sobre Data Sciente e R em primeira mão.