Capítulo 13 Dataframes

# -----------------------------------------------------------------------------
# Data Frames
# -----------------------------------------------------------------------------
x = rnorm(10,
          10,
          2)

y = letters[1:10]

data.frame()
## data frame com 0 coluna e 0 linha
dF = data.frame(x,
                 y)
dF
##            x y
## 1   8.054295 a
## 2   9.026702 b
## 3  11.200148 c
## 4   7.286668 d
## 5   6.583426 e
## 6   8.518276 f
## 7   9.813054 g
## 8   8.164950 h
## 9   9.104841 i
## 10  6.138341 j
# O comando str informa (retorna) a estrutura de um objeto e a parte dos dados
# que contém:
str(dF)
## 'data.frame':    10 obs. of  2 variables:
##  $ x: num  8.05 9.03 11.2 7.29 6.58 ...
##  $ y: chr  "a" "b" "c" "d" ...
# A instrução 'summary' sumariza um objeto (aqui, um frame, mas vai bem com
# quase todos objetos):
summary(dF)
##        x               y            
##  Min.   : 6.138   Length:10         
##  1st Qu.: 7.479   Class :character  
##  Median : 8.342   Mode  :character  
##  Mean   : 8.389                     
##  3rd Qu.: 9.085                     
##  Max.   :11.200
# Pode-se ter acesso aos dados das colunas de diversas maneiras:
dF$x 
##  [1]  8.054295  9.026702 11.200148  7.286668  6.583426  8.518276  9.813054  8.164950
##  [9]  9.104841  6.138341
h = dF$x
h
##  [1]  8.054295  9.026702 11.200148  7.286668  6.583426  8.518276  9.813054  8.164950
##  [9]  9.104841  6.138341
dF$y
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
dF[ ,1]
##  [1]  8.054295  9.026702 11.200148  7.286668  6.583426  8.518276  9.813054  8.164950
##  [9]  9.104841  6.138341
dF[['x']]
##  [1]  8.054295  9.026702 11.200148  7.286668  6.583426  8.518276  9.813054  8.164950
##  [9]  9.104841  6.138341
dF[['y']]
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
dim(dF)
## [1] 10  2
names(dF)
## [1] "x" "y"
row.names(dF)
##  [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"
# Pode-se mudar o nome das linhas ou das colunas:
names(dF) = c('ivan',
               'joao')
dF
##         ivan joao
## 1   8.054295    a
## 2   9.026702    b
## 3  11.200148    c
## 4   7.286668    d
## 5   6.583426    e
## 6   8.518276    f
## 7   9.813054    g
## 8   8.164950    h
## 9   9.104841    i
## 10  6.138341    j
row.names(dF) = letters[1:nrow(dF)]

row.names(dF) = c('Br','Fr','Ba','KK','LL','DR','QA','WW','FF', 'NN')

dF$z = seq(1, 10)

names(dF) = c('r',
               'tt',
               'zz')
dF
##            r tt zz
## Br  8.054295  a  1
## Fr  9.026702  b  2
## Ba 11.200148  c  3
## KK  7.286668  d  4
## LL  6.583426  e  5
## DR  8.518276  f  6
## QA  9.813054  g  7
## WW  8.164950  h  8
## FF  9.104841  i  9
## NN  6.138341  j 10
# Pode-se ter acesso direto as colunas de um frame usando o comando attach().
# Obs: Não deve esquecer-se de destacá-lo detach() quando terminar!
attach(dF)
mean(r)
## [1] 8.38907
mean(zz)
## [1] 5.5
detach(dF)

# Opção melhor
with(dF,
     mean(zz))
## [1] 5.5
with(dF,
     sort(x))
##  [1]  6.138341  6.583426  7.286668  8.054295  8.164950  8.518276  9.026702  9.104841
##  [9]  9.813054 11.200148
# -----------------------------------------------------------------------------
# Exercícios
# ----------------------------------------------------------------------------- 
# 1. Crie um dataframe expondo os nomes de 10 pacientes de uma academia, constando peso e altura de cada um, e obtendo também a média desses dois parâmetros
# 2. Uma socióloga deseja estudar o perfil dos alunos em um determinado curso da universidade. Monte um dataframe com os seguintes dados de cada pessoa: nome, raça, entrada ou não por ação afirmativa, renda mensal familiar. (Supor 15 alunos)
# 3. Um biólogo deseja avaliar um tipo de réptil. Monte um data frame que contenha a cor de cada réptil estudado(verde, marrom ou preto), o tamanho, e se é macho ou fêmea. Responda o tamanho médio, a quantidade de répteis por cores e a quantidade de machos e de fêmeas. (Suponha que 10 répteis estejam sendo estudados)