SEMANA 08 - Estruturas de dados. Indexação. Loop em data.frame (tibble) - P1 - Atividade B08

Gustavo Eduardo Marcatti

Questão (a)

##-------- Ler arquivo hospedado na internet --------------##
library(httr)
url <- "https://gmarcatti.github.io/dados/dados.xlsx"
GET(url, write_disk(arq <- tempfile(fileext = ".xlsx")))
# install.packages("readxl")
library(readxl)
dados <- read_excel(arq)
# dados <- read_excel("C:/dados/dados.xlsx") # se o arquivo estiver no pc
dados
# 1. identificar e quanticar as classes únicas
uni_prec <- unique(dados$prec_mm)
N <- length(uni_prec)

# 2. criar data.frame(ou tibble) receber meus resultados
library(tibble)
coefs <- tibble(prec = vector("integer", N),
                b0 = vector("numeric", N),
                b1 = numeric(N),
                r2 = numeric(N))
# 3. como acessar os elementos no resultado do processo
lm_geral <- lm(volume ~ idade, dados)
str(lm_geral)
lm_geral$coefficients[[1]]
lm_geral$coefficients[[2]]
resumo <- summary(lm_geral)
str(resumo)
resumo$r.squared
r2func <- function(obs, est) {
   r2valor <- cor(obs, est)^2
}

# 4. loop - processo de repetição
uni_prec_or <- sort(uni_prec)
for (i in 1:N) {
   # filtrar a classe de interesse
   dados_i <- subset(dados, prec_mm == uni_prec_or[i])
   # executar os comandos para os dados filtrados
   lm_i <- lm(volume ~ idade, dados_i)
   # modificar a tibble adicionando os resultados
   coefs[i, "prec"] <- uni_prec_or[i]
   coefs[i, "b0"] <- lm_i$coefficients[[1]]
   coefs[i, "b1"] <- lm_i$coefficients[[2]]
   coefs[i, "r2"] <- r2func(dados_i$volume, fitted(lm_i))
   #resumo <- summary(lm_i)
   #coefs[i, "r2"] <- resumo$r.squared
}
coefs
# filtrar dados da classe de 800mm de precipitação
#dados_i <- subset(dados, prec_mm == uni_prec_or[1])

Questão (b)

rep(c(1,2), each = 3)
rep(c(1,2), times = 3)
dados <- tibble(Proj = rep(c(1,2), each = 3),
                Volume = c(290, 297, 328, 292, 289, 310))

# 1. identificar e quanticar as classes únicas
uni_proj <- unique(dados$Proj)
N <- length(uni_proj)
# 2. criar data.frame(ou tibble) receber meus resultados
# integer(N) é igual a vector("integer", N)
est_media <- tibble(Proj = integer(N),
                    Volume_medio = numeric(N))
# 3. como acessar os elementos no resultado do processo
dados$Volume
mean(dados$Volume)
# 4. loop - processo de repetição
for (i in 1:N) {
   # filtrar a classe de interesse
   dados_i <- subset(dados, Proj == uni_proj[i])
   # executar os comandos necessários para os dados filtrados
   media <- mean(dados_i$Volume)
   # modificar tibble para adicionar os resultados
   est_media[i, "Proj"] <- uni_proj[i]
   est_media[i, "Volume_medio"] <- media
}
est_media

Questão (c)

##-------- Ler arquivo hospedado na internet --------------##
library(httr)
url <- "https://gmarcatti.github.io/dados/dados.xlsx"
GET(url, write_disk(arq <- tempfile(fileext = ".xlsx")))
# install.packages("readxl")
library(readxl)
dados <- read_excel(arq)
# dados <- read_excel("C:/dados/dados.xlsx") # se o arquivo estiver no pc
dados
# 1. identificar e quantificar as classes de repetição
uni_gen <- unique(dados$genotipo)
N <- length(uni_gen)
# 2. criar tibble para receber os resultados
ests <- tibble(material_gen = character(N),
               vol_m = numeric(N),
               vol_dp = numeric(N),
               hd_m = numeric(N),
               hd_dp = numeric(N))
# 3. identificar como gerar e acessar os resultados
mean(dados$hd)
sd(dados$hd)
# 4. processo de repetição (loop)
for(i in 1:N) {
   # filtrar classe de interesse
   dados_i <- subset(dados, genotipo == uni_gen[i])
   # executar os comandos necessários
   # modificar tibble para adicionar os resultados
   ests[i, "material_gen"] <- uni_gen[i]
   ests[i, "vol_m"] <- mean(dados_i$volume)
   ests[i, "vol_dp"] <- sd(dados_i$volume)
   ests[i, "hd_m"] <- mean(dados_i$hd)
   ests[i, "hd_dp"] <- sd(dados_i$hd)
}

ests