Ads Top

5 maneiras de subdividir um data frame em R

Geralmente, quando você trabalha com um grande conjunto de dados, estará interessado apenas em uma pequena parte dele para sua análise específica. Então, como você classifica todas as variáveis e observações estranhas e extrai apenas aquelas que precisa? Bem, R tem várias maneiras de fazer isso em um processo que chama de "subconjunto".

A maneira mais básica de subconjunto de um quadro de dados em R é usando colchetes, como em:

exemplo[x,y]

Exemplo é o data frame que queremos subdividir, 'x' são as linhas que queremos que sejam retornadas, e 'y' são as colunas que também serão retornadas.

Vamos pegar um arquivo csv da internet e ver este exemplo em dados reais.

Digite os comandos abaixo no ambiente R:

<- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringasfactors="FALSE)</p" vincentarelbundock.github.io=""><- c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" p="" rban.population="" tate="">education <- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringsasfactors="FALSE)</b" vincentarelbundock.github.io="">
<- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringasfactors="FALSE)</p" vincentarelbundock.github.io=""><- c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" p="" rban.population="" tate="">
<- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringasfactors="FALSE)</p" vincentarelbundock.github.io=""><- c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" p="" rban.population="" tate="">colnames(education) <- b="" c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" rban.population="" tate="">
<- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringasfactors="FALSE)</p" vincentarelbundock.github.io=""><- c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" p="" rban.population="" tate="">
<- csv="" datasets="" education.csv="" https:="" read.csv="" robustbase="" stringasfactors="FALSE)</p" vincentarelbundock.github.io=""><- c="" ducation.expenditures="" egion="" er.capita.income="" inor.population="" p="" rban.population="" tate="">View(education)

Veja como é a primeira parte do nosso conjunto de dados depois de importar os dados e nomear adequadamente suas colunas.



Agora, suponhamos que supervisionemos a divisão de escolas do Centro-Oeste e que somos responsáveis por calcular quanto dinheiro foi gasto por criança em cada estado de nossa região.

Precisávamos de três variáveis: State, Minor.Population e Education.Expenditures. No entanto, precisaríamos apenas das observações das linhas que correspondem à região 2. Aqui está a maneira básica de recuperar esses dados em R:

ed_exp1 <- b="" c="" education="">

Para criar o novo dataframe 'ed_exp1', subconjuntamos o quadro de dados 'educacional' extraindo as linhas 10-21 e as colunas 2, 6 e 7. Bastante simples, certo?

Outra maneira de subconjunto do quadro de dados com colchetes é omitindo as referências de linha e coluna. Dê uma olhada neste código:

ed_exp2 <- b="" c="" education="">

Aqui, em vez de agrupar as linhas e colunas que desejávamos retornar, subconjuntamos as linhas e colunas que não desejávamos que fossem devolvidas e as omitimos com o sinal “-”. Se agora chamarmos ed_exp1 e ed_exp2, podemos ver que os dois quadros de dados retornam o mesmo subconjunto do quadro de dados educacional original.

 ed_exp1
   State Minor.Population Education.Expenditures
10    OH              324                    221
11    IN              329                    264
12    IL              320                    308
13    MI              337                    379
14    WI              328                    342
15    MN              330                    378
16    IA              318                    232
17    MO              309                    231
18    ND              333                    246
19    SD              330                    230
20    NB              318                    268
21    KS              304                    337

 ed_exp2
   State Minor.Population Education.Expenditures
10    OH              324                    221
11    IN              329                    264
12    IL              320                    308
13    MI              337                    379
14    WI              328                    342
15    MN              330                    378
16    IA              318                    232
17    MO              309                    231
18    ND              333                    246
19    SD              330                    230
20    NB              318                    268
21    KS              304                    337


Agora, essas formas básicas de subconjunto de um quadro de dados em R podem se tornar tediosas com grandes conjuntos de dados. Você precisa conhecer as referências exatas das colunas e linhas que deseja extrair. É muito fácil com 7 colunas e 50 linhas, mas e se você tiver 70 colunas e 5.000 linhas? 

Como você encontra quais colunas e linhas você precisa nesse caso? Aqui está outra maneira de definir um quadro de dados em R:

ed_exp3 <- 2="" b="" c="" ducation.expenditures="" education="" egion="=" in="" inor.population="" names="" tate="" which="">


Agora, temos algumas coisas acontecendo aqui. Primeiro, estamos usando a mesma técnica básica de bracketing para subconjunto do quadro de dados educacionais, como fizemos nos dois primeiros exemplos. Desta vez, no entanto, estamos extraindo as linhas necessárias, usando a função which (). 

Essa função retorna os índices de onde a coluna Region dos dados educacionais é 2. Isso nos fornece as linhas de que precisamos. Recuperamos as colunas do subconjunto usando o operador% em% nos nomes do quadro de dados educacionais.

Agora, você pode olhar para esta linha de código e pensar que é muito complicado. Tem que haver uma maneira mais fácil de fazer isso. Bem, você estaria certo. Há outra função básica no R que nos permite subconectar um quadro de dados sem conhecer as referências de linha e coluna. O nome? Você adivinhou: subconjunto ().

ed_exp4 <- 2="" b="" ducation.expenditures="" education="" inor.population="" region="=" select="c(" subset="" tate="">

A função subconjunto () recebe 3 argumentos: o quadro de dados que você deseja subconjunto, as linhas correspondentes à condição pela qual você deseja subconjunto e as colunas que você deseja retornar. No nosso caso, tomamos um subconjunto de educação em que “Region” é igual a 2 e, em seguida, selecionamos as colunas “State”, “Minor.Population” e “Education.Expenditure”.

Quando subdividimos o quadro de dados educacionais com um dos dois métodos mencionados acima, obtemos o mesmo resultado que obtivemos com os dois primeiros métodos:

ed_exp3
   State Minor.Population Education.Expenditures
10    OH              324                    221
11    IN              329                    264
12    IL              320                    308
13    MI              337                    379
14    WI              328                    342
15    MN              330                    378
16    IA              318                    232
17    MO              309                    231
18    ND              333                    246
19    SD              330                    230
20    NB              318                    268
21    KS              304                    337


ed_exp4
   State Minor.Population Education.Expenditures
10    OH              324                    221
11    IN              329                    264
12    IL              320                    308
13    MI              337                    379
14    WI              328                    342
15    MN              330                    378
16    IA              318                    232
17    MO              309                    231
18    ND              333                    246
19    SD              330                    230
20    NB              318                    268
21    KS              304                    337

Agora, há apenas mais um método para compartilhar com você. Esse último método, depois de aprender bem, provavelmente será o mais útil para você manipular dados. 

Vamos dar uma olhada no código e depois analisaremos.

install.packages("dplyr")

library(dplyr)

ed_exp5 <- 2="" b="" c="" education="" filter="" inor.population:education.expenditures="" region="=" select="" tate="">

Este último método não faz parte do ambiente R básico. Para usá-lo, você precisa instalar e baixar o pacote dplyr. No entanto, se você estiver trabalhando com dados no R, este é um pacote que você definitivamente desejará. 

Ele está entre os pacotes mais baixados no ambiente R e, quando você começar a usá-lo, verá rapidamente o motivo.

Portanto, após o download do dplyr, criamos um novo quadro de dados usando duas funções diferentes deste pacote:

  • filtro: o primeiro argumento é o quadro de dados; o segundo argumento é a condição pela qual queremos subconjuntos. O resultado é todo o quadro de dados, apenas com as linhas que desejávamos.
  • selecione: o primeiro argumento é o quadro de dados; o segundo argumento são os nomes das colunas que queremos selecionar a partir dele. Não precisamos usar a função names () e nem precisamos usar aspas. Simplesmente listamos os nomes das colunas como objetos.
Neste exemplo, agrupamos a função de filtro na função de seleção para retornar nosso quadro de dados. Em outras palavras, primeiro pegamos as linhas em que a região é 2 como um subconjunto. 

Em seguida, pegamos as colunas que queríamos apenas dessas linhas. O resultado nos fornece um quadro de dados que consiste nos dados que precisamos para nossos 12 estados de interesse:

 ed_exp5
   State Minor.Population Education.Expenditures
1     OH              324                    221
2     IN              329                    264
3     IL              320                    308
4     MI              337                    379
5     WI              328                    342
6     MN              330                    378
7     IA              318                    232
8     MO              309                    231
9     ND              333                    246
10    SD              330                    230
11    NB              318                    268
12    KS              304                    337

Então, para recapitular, aqui estão 5 maneiras pelas quais podemos definir subsets em um dataframe no R:

  • Subconjunto usando colchetes, extraindo as linhas e colunas que queremos
  • Subconjunto usando colchetes, omitindo as linhas e colunas que não queremos
  • Subconjunto usando colchetes em combinação com a função what () e o operador% em%
  • Subconjunto usando a função subconjunto ()
  • Subconjunto usando as funções filter () e select () do pacote dplyr

É isso aí! 

Nenhum comentário:

Tecnologia do Blogger.