Prof. Marcelo Azevedo Costa Departamento de Engenharia de Produção Universidade Federal de Minas Gerais
Leitura de dados: leitura de dados a partir de arquivos leitura de dados a partir de páginas na web. Introdução à programação no R. Estruturas de dados: variáveis, data.frames e listas. Comandos length() e dim(). Estruturas lógicas. Manipulação de dados: acessando colunas e estruturas de dados de data.frames e listas. Exercícios. aula01.r
Comando read.table() data <- read.table("regr_serie01.csv", header = TRUE, sep = ",") summary(data) plot(data$periodo,data$vendas) Uma variação: dados <- read.table( file.choose() ) dados <- read.csv("base_aneel.csv")
dados <- read.table( file.choose() ) dados <- read.csv( file.choose() ) setwd( choose.dir() ) dados <- edit(data.frame()) choose.files(filters = Filters[c("zip", "All"),]) dados <- edit(data.frame()) write.table(dados01, "teste.csv",quote=f, sep=",",row.names=f)
XML package provides an amazing readhtmltable() function library(xml) ## if(!require(xml)){ install.packages(xml); library(xml) } acsi.url="http://www.theacsi.org/index.php?option=com_content&view=article &id=147&catid=&itemid=212&i=airlines" acsi.df=readhtmltable(acsi.url,header=t,which=1,stringsasfactors=f) # only keep column #1(name) and #18 (2010 score) acsi.df=acsi.df[,c(1,18)] head(acsi.df,1)
numeric, logical, character or list, matrix, array, factor and data.frame
## Data: 27/02/2013 ## Prof. Marcelo A Costa ## Departamento de Engenharia de Producao ## Analise Exploratoria de Dados rm(list=ls(all=true)) dados <- read.csv("base_aneel.csv") names(dados) ## Abrir os dados em uma planilha de dados fix(dados) ## Analise Exploratoria ## ## Tabela de Frequencia table(dados$empresa) barplot( table(dados$empresa), ylab="frequencia", xlab="empresa", col="yellow" )
# Programa para leitura e processamento dos dados da França # Implementação do Modelo de Regressão Logístico Univariado # Um modelo para cada uma das 22283 covariáveis # # Executa uma simulação com permutação para verificar quais são # as variáveis mais significativas rm(list=ls(all=true)); ## Clear all objects aux <- read.table("c:/azevedo/projetos/euler_braga/dadoshouston.txt"); out <- read.table("c:/azevedo/projetos/euler_braga/pcr82.txt",header = FALSE); n <- dim(out)[1]; # Selects the number of the observations var <- as.matrix( t(aux) ); trn <- list(c("y","x")); trn$y <- (as.matrix(out)); vtdev <- 0*(1:(dim(var)[2])); vtaic <- 0*(1:(dim(var)[2])); vtpv <- 0*(1:(dim(var)[2])); vtmax <- 0*1:1000; for( cnt_ in 1:1000 ){ for( cont in 1:(dim(var)[2]) ){ trn$x <- as.numeric(var[,cont]); trn$x <- trn$x[sample(n,n)]; model <- glm(y ~ x, family = binomial, data = trn); s <- summary.glm(model); vtdev[cont] <- model$dev; vtaic[cont] <- model$aic; vtpv[cont] <-(s$coef)[2,4]; } vtmax[cnt_] <- max( vtdev ); # Take the maximum of the deviance vector # Save the results write.table(vtmax[1:cnt_], file = "C:/azevedo/Projetos/Euler_Braga/max.csv", sep = " ", row.names = FALSE); }
Estrutura básica de algoritmos Tipos de variáveis (objetos) Operações Aritméticas e Lógicas Estruturas de condição Estrutura condicional simples Estrutura condicional composta Estruturas de repetição (loops) Exemplos
Algoritmo Declare A, B, C numérico # Declaração das variáveis Leia A, B C (A + B) x B Escreva A, B, C # Leitura das variáveis # manipulação # impressão de resultados Fim Algoritmo
Operadores aritméticos básicos: +, -, *, /, ^ (potência). Funções aritméticas básicas: log(), exp(), sin(), cos(), tan(), sqrt(). Operadores lógicos <, <=, >, >=, ==,!=, & (and), (or). Ex. c <- (x > 0), verifica se o número é maior que zero. c ( TRUE, FALSE ) ou (0, 1).
Se condição então sequência de comandos Fim Se f ( x) 1 4 x, 0, x 3 caso contrário f_x <- 0 if(x>=3){ f_x <- x/4 } if(condição){ comandos }
f ( x) 1 4 x, 0, 1 x 3 caso contrário f_x <- 0 if((x>=1)&(x<=3)){ f_x <- x/4 }
Se condição então sequência A de comandos senão sequência B de comandos Fim Se 1 4 x, 0 x 2 f x), 2 x 6 ( 1 8 0, caso contrário
f_x <- 0 if((x>=0)&(x<=2)){ f_x <- x/4 } if((x>2)&(x<=6)) { f_x <- 1/8 } if((x>=0)&(x<=2)){ f_x <- x/4 } else { if((x>2)&(x<=6)){ f_x <- 1/8 } else { f_x <- 0 } }
Variáveis, ex. x <- 5 ou x = 5 Vetores, ex. x <- c(10.4, 5.6, 3.1, 6.4) Sequência, 1:6 ou s <- seq(-5, 5, by=0.2) Matrizes Fatores Listas Funções
Repita Se condição então interrompa Fim Se sequência de comandos Fim Repita
for(sequência) sequência de comandos if(condição) break end if end for x <- 0 for(c in 1:10){ x <- x + c } for(c in seq(1, 10, by=0.25)) cat(c," \n")
vetor <- seq(0, 10, by=0.01) tam <- length(vetor) soma <- 0; for(c in 1:tam){ soma <- soma + vetor[c] } Outras formas de definir vetores: x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
# Programa para a geração de um gráfico de densidade de # probabilidade - 28/02/2008 x <- seq(-1, 10, by=0.01) # gera as sequencias de x f_x <- 0*x; # inicializa o vetor resposta tam <- 1101 # armazena o tamanho do vetor for(cont in 1:tam){ # loop de varredura dos valores de x # Aplicação da função de densidade if((x[cont]>=0)&(x[cont]<=2)){ f_x[cont] <- x[cont]/4 } else { if((x[cont]>2)&(x[cont]<=6)){ f_x[cont] <- 1/8 } else { f_x[cont] <- 0 } } } # Fim loop for plot(x,f_x); # Plota os resultados
x <- seq(-1, 10, by=0.01) f_x <- 0*x tam <- 1101 for(cont in 1:tam){ if((x[cont]>=0)&(x[cont]<=2)){ f_x[cont] <- x[cont]/4 } else { if((x[cont]>2)&(x[cont]<=6)){ f_x[cont] <- 1/8 } else { f_x[cont] <- 0 } } } plot(x,f_x)
q() Sair help(solve) Ajuda do R ou?solve objects() ou ls() lista os objetos armazenados no R
Estrutura capaz de armazenar sequências de valores sejam números ou caracteres x1 <- 10 x2 <- c(1, 3, 6) x2[1] length(x2) x3 <- 1:10 x4 <- seq(0,1, by=0.1) x4[x4 > 0.5] x4 > 0.5 x5 <- seq(0,1, len=11) O comando c(.), concatena os elementos no seu argumento Operação lógica em um vetor OBS: Os vetores só podem ser de um único tipo.
vetor <- seq(0, 10, by=0.01) tam <- length(vetor) soma <- 0; for(c in 1:tam){ soma <- soma + vetor[c] } Outras formas de definir vetores: x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
Crie um algoritmo que gera uma sequência de valores entre 0 e 15, espaçados de 0.02 e calcula a soma dos mesmos. Acrescente a opção de calcular a média dos valores gerados.
x6 <- rep(1, 5) x7 <- rep(c(1, 2), c(3, 5)) x8 <- rep(1:3, rep(5,3)) x9 <- rnorm(10, mean=70, sd=10) sum(x9) mean(x9) var(x9) min(x9) max(x9) summary(1:10) x10 <- x9[x9 > 72]
x <- array(1:20, dim=c(4,5)) y <- array(c(1:3,3:1),dim=c(4,5)) Xb <- matrix(0, linhas, colunas) a <- c(1,2,3) b <- c(4,5,6) c <- rbind(a,b) c <- cbind(a,b)
Crie um programa capaz de gerar duas matrizes A 3x5 e B 5x7. Inicialize os elementos da matriz a partir de valores aleatórios uniformes a partir do comando runif(.). Calcule uma nova matriz C definida como o produto das matrizes A e B
Um script em R pode ser salvo em arquivo e posteriormente executado ou mesmo novamente acessado e modificado.