Quadros de Dados

Linguagem R

PIB municipal - Municípios brasileiros com os 100 maiores PIB
PIB municipal - Municípios brasileiros com os 100 maiores PIB

Quadros de dados (data frames) são listas de vetores de mesmo comprimento. São semelhantes às tabelas dos bancos de dados relacionais, onde cada coluna possui seu tipo de dado próprio, e diferentes das matrizes, onde todos os elementos são do mesmo tipo de dado. Assim como os arrays podem ser vistos como um conjunto de tabelas ordenadas, os quadros de dados podem ser vistos como um conjunto de vetores ordenados, sendo que cada vetor representa uma coluna do quadro de dados fazendo-se uma analogia às tabelas dos bancos de dados relacionais.

Para este estudo vamos utilizar os dados da planilha “Posição ocupada pelos 100 maiores municípios, em relação ao Produto Interno Bruto - 2016”, publicada na página IBGE Downloads.

Podemos introduzir os dados da planilha manualmente no quadro de dados:

> # Os três municípios com o maior PIB
> pib_mun <- data.frame(
+     mun_uf = c("São Paulo/SP", "Rio de Janeiro/RJ", "Brasília/DF"), # Município/UF
+     posicao = c("1º", "2º", "3º"),                                  # Posição
+     pib = c(687035890, 329431360, 235497107),                       # PIB 1.000 R$
+     participacao = c(10.96, 5.26, 3.76)                             # Participação %
+ )
> print(pib_mun)
             mun_uf posicao       pib participacao
1      São Paulo/SP      1º 687035890        10.96
2 Rio de Janeiro/RJ      2º 329431360         5.26
3       Brasília/DF      3º 235497107         3.76

Mas também é possível importar as informações do quadro de dados a partir de um arquivo delimitado, o que facilita muito:

> # Os cem municípios com o maior PIB
> pib_mun <- read.table("pib_mun_ibge.csv", header=TRUE, sep=",")
> # Número de linhas e colunas do quadro de dados
> dim(pib_mun)
[1] 100   5
> # Primeiras seis linhas do quadro de dados
> head(pib_mun)
             mun_uf posicao       pib participacao acumulado
1      São Paulo/SP      1º 687035890        10.96     10.96
2 Rio de Janeiro/RJ      2º 329431360         5.26     16.22
3       Brasília/DF      3º 235497107         3.76     19.98
4 Belo Horizonte/MG      4º  88277463         1.41     21.39
5       Curitiba/PR      5º  83788904         1.34     22.72
6         Osasco/SP      6º  74402691         1.19     23.91
> # Últimas seis linhas do quadro de dados
> tail(pib_mun)
                   mun_uf posicao     pib participacao acumulado
95              Suzano/SP     95º 9468888         0.15     55.22
96        Rondonópolis/MT     96º 9418111         0.15     55.37
97  São João de Meriti/RJ     97º 9410815         0.15     55.52
98              Macapá/AP     98º 9279790         0.15     55.67
99         Três Lagoas/MS     99º 9234693         0.15     55.81
100     Angra dos Reis/RJ    100º 9122561         0.15     55.96

Classes, tipos de dados e valores do quadro de dados:

> # Classe e tipo do quadro de dados
> class(pib_mun)
[1] "data.frame"
> typeof(pib_mun)
[1] "list"
> # Coluna Município/UF
> class(pib_mun[["mun_uf"]])
[1] "factor"
> pib_mun[["mun_uf"]][1]
[1] São Paulo/SP
100 Levels: Americana/SP Anápolis/GO ... Volta Redonda/RJ
> # Coluna PIB
> class(pib_mun[["pib"]])
[1] "integer"
> pib_mun[["pib"]][1]
[1] 687035890
> typeof(pib_mun[["pib"]][1])
[1] "integer"
> # Coluna participação percentual
> class(pib_mun[["participacao"]])
[1] "numeric"
> pib_mun[["participacao"]][1]
[1] 10.96
> typeof(pib_mun[["participacao"]][1])
[1] "double"

Como todas as colunas dos quadros de dados são vetores, e todos os elementos dos vetores são do mesmo tipo de dado, os elementos da coluna são convertidos para um mesmo tipo de dado, neste caso complexo para a coluna valor.

> tipos <- data.frame(
+     tipo = c("Inteiro", "Numérico", "Complexo"), # Tipos de dados
+     valor = c(1L, 2e6, 1 + 2i)                   # Valores
+ )
> print(tipos)
      tipo      valor
1  Inteiro       1+0i
2 Numérico 2000000+0i
3 Complexo       1+2i
> class(tipos[["valor"]])
[1] "complex"

Mostrar o gráfico dos municípios brasileiros com os 100 maiores PIB (imagem destacada):

> plot(pib_mun[,'pib'],
+     main="Municípios brasileiros com os 100 maiores PIB",
+     type="h", xlab="Posição", ylab="PIB")