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.
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.
->->
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:
Postar um comentário