From ee11d675e783a6a31a31e7737f8260e496c7934f Mon Sep 17 00:00:00 2001
From: Walmes Zeviani <walmes@ufpr.br>
Date: Sun, 15 May 2016 15:59:44 -0300
Subject: [PATCH] Adiciona o campeonato brasileiro de 2010.

---
 R/cambras.R      |  79 ++++++++++++++++++++++++++++++++++++++++++++
 data/cambras.rda | Bin 0 -> 2121 bytes
 man/cambras.Rd   |  83 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 162 insertions(+)
 create mode 100644 R/cambras.R
 create mode 100644 data/cambras.rda
 create mode 100644 man/cambras.Rd

diff --git a/R/cambras.R b/R/cambras.R
new file mode 100644
index 0000000..becf204
--- /dev/null
+++ b/R/cambras.R
@@ -0,0 +1,79 @@
+#' @name cambras
+#' @title Resultados do Campeonato Brasileiro de 2010
+#' @description Dados sobre o número de gols dos times mandantes e
+#'     desafiantes de todas as partidas do Campeonato Brasileiro de
+#'     2010.
+#' @format Um \code{data.frame} com 380 observações e 5 variáveis.
+#' \describe{
+#'
+#' \item{\code{rod}}{Inteiro que identifica o número da rodada.}
+#'
+#' \item{\code{home}}{Fator que identifica o time mandante da partida,
+#'     aquele que jogou em casa.}
+#'
+#' \item{\code{away}}{Fator que identifica o time desafiante da partida,
+#'     aquele que jogou fora de casa.}
+#'
+#' \item{\code{h}}{Número de gols feitos pelo time mandante na partida.}
+#'
+#' \item{\code{a}}{Número de gols feitos pelo time desafiante na
+#'     partida.}
+#'
+#' }
+#' @examples
+#'
+#' # Resultados finais na internet.
+#' # browseURL(paste0("http://esportes.terra.com.br/futebol/",
+#' #                  "brasileiro/2010/noticias/0,,OI4339585-EI15413",
+#' #                  ",00-Classificacao+e+Jogos+Serie+A.html"))
+#'
+#' Xh <- model.matrix(~-1 + home, cambras)
+#' Xa <- model.matrix(~-1 + away, cambras)
+#'
+#' Xha <- Xh - Xa
+#' cambras[1:5, c("home", "away")]
+#' print(as.table(t(Xha[1:5, ])), zero.print = ".")
+#'
+#' gsgc <- cbind(scored = t(Xh) %*% cambras$h + t(Xa) %*% cambras$a,
+#'               conceded = t(Xa) %*% cambras$h + t(Xh) %*% cambras$a)
+#' colnames(gsgc) <- c("gScored", "gConced")
+#' gsgc
+#'
+#' # Pontos em cada partida (empate = 1, vitória = 3).
+#' pts <- with(cambras, {
+#'     d <- h - a
+#'     draw <- d == 0
+#'     winH <- d > 0
+#'     winA <- !(draw | winH)
+#'     x <- cbind(h = winH * 3 + draw, a = winA * 3 + draw)
+#'     return(x)
+#' })
+#'
+#' tableIn <- function(x) {
+#'     tb <- table(x)
+#'     f <- rep(0, 3)
+#'     names(f) <- c(0, 1, 3)
+#'     f[names(tb)] <- tb
+#'     return(f)
+#' }
+#'
+#' # Derrotas, empates e vitórias.
+#' ldw <-
+#'     do.call(rbind, lapply(tapply(pts[, 1], cambras$home,
+#'                                  FUN = tableIn),
+#'                           FUN = as.vector)) +
+#'     do.call(rbind, lapply(tapply(pts[, 2], cambras$away,
+#'                                  FUN = tableIn),
+#'                           FUN = as.vector))
+#' colnames(ldw) <- c("Lose", "Draw", "Win")
+#' ldw
+#'
+#' # Tabela completa de 2010.
+#' pl10 <- t(Xh) %*% pts[, "h"] + t(Xa) %*% pts[, "a"]
+#' pl10 <- cbind(team = levels(cambras$home), data.frame(pts = pl10))
+#' pl10 <- cbind(pl10, ldw[, 3:1], gsgc)
+#' pl10 <- plyr::arrange(pl10, -pts)
+#' pl10$pos <- rank(-pl10$pts)
+#' pl10
+#'
+NULL
diff --git a/data/cambras.rda b/data/cambras.rda
new file mode 100644
index 0000000000000000000000000000000000000000..a718421d2c17b064e58ef280cf14849b26832810
GIT binary patch
literal 2121
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

literal 0
HcmV?d00001

diff --git a/man/cambras.Rd b/man/cambras.Rd
new file mode 100644
index 0000000..37bf7cb
--- /dev/null
+++ b/man/cambras.Rd
@@ -0,0 +1,83 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/cambras.R
+\name{cambras}
+\alias{cambras}
+\title{Resultados do Campeonato Brasileiro de 2010}
+\format{Um \code{data.frame} com 380 observações e 5 variáveis.
+\describe{
+
+\item{\code{rod}}{Inteiro que identifica o número da rodada.}
+
+\item{\code{home}}{Fator que identifica o time mandante da partida,
+    aquele que jogou em casa.}
+
+\item{\code{away}}{Fator que identifica o time desafiante da partida,
+    aquele que jogou fora de casa.}
+
+\item{\code{h}}{Número de gols feitos pelo time mandante na partida.}
+
+\item{\code{a}}{Número de gols feitos pelo time desafiante na
+    partida.}
+
+}}
+\description{
+Dados sobre o número de gols dos times mandantes e
+    desafiantes de todas as partidas do Campeonato Brasileiro de
+    2010.
+}
+\examples{
+# Resultados finais na internet.
+# browseURL(paste0("http://esportes.terra.com.br/futebol/",
+#                  "brasileiro/2010/noticias/0,,OI4339585-EI15413",
+#                  ",00-Classificacao+e+Jogos+Serie+A.html"))
+
+Xh <- model.matrix(~-1 + home, cambras)
+Xa <- model.matrix(~-1 + away, cambras)
+
+Xha <- Xh - Xa
+cambras[1:5, c("home", "away")]
+print(as.table(t(Xha[1:5, ])), zero.print = ".")
+
+gsgc <- cbind(scored = t(Xh) \%*\% cambras$h + t(Xa) \%*\% cambras$a,
+              conceded = t(Xa) \%*\% cambras$h + t(Xh) \%*\% cambras$a)
+colnames(gsgc) <- c("gScored", "gConced")
+gsgc
+
+# Pontos em cada partida (empate = 1, vitória = 3).
+pts <- with(cambras, {
+    d <- h - a
+    draw <- d == 0
+    winH <- d > 0
+    winA <- !(draw | winH)
+    x <- cbind(h = winH * 3 + draw, a = winA * 3 + draw)
+    return(x)
+})
+
+tableIn <- function(x) {
+    tb <- table(x)
+    f <- rep(0, 3)
+    names(f) <- c(0, 1, 3)
+    f[names(tb)] <- tb
+    return(f)
+}
+
+# Derrotas, empates e vitórias.
+ldw <-
+    do.call(rbind, lapply(tapply(pts[, 1], cambras$home,
+                                 FUN = tableIn),
+                          FUN = as.vector)) +
+    do.call(rbind, lapply(tapply(pts[, 2], cambras$away,
+                                 FUN = tableIn),
+                          FUN = as.vector))
+colnames(ldw) <- c("Lose", "Draw", "Win")
+ldw
+
+# Tabela completa de 2010.
+pl10 <- t(Xh) \%*\% pts[, "h"] + t(Xa) \%*\% pts[, "a"]
+pl10 <- cbind(team = levels(cambras$home), data.frame(pts = pl10))
+pl10 <- cbind(pl10, ldw[, 3:1], gsgc)
+pl10 <- plyr::arrange(pl10, -pts)
+pl10$pos <- rank(-pl10$pts)
+pl10
+}
+
-- 
GitLab