Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Próxima revisão | Revisão anterior | ||
cursos:mct:exemplo1b [2011/05/26 00:32] – criada paulojus | cursos:mct:exemplo1b [2011/05/27 19:18] (atual) – paulojus | ||
---|---|---|---|
Linha 41: | Linha 41: | ||
## lendo | ## lendo | ||
dados <- ReadExcel(" | dados <- ReadExcel(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Dados de largura fixa ==== | ||
+ | |||
+ | Considere que temos um arquivo de dados '' | ||
+ | Considere ainda que estes dados se reverem a 4 variáveis, sendo que os 2 primeiros campos da primeira, | ||
+ | depois 3 da segunda, 6 de terceira e 2 da quarta. | ||
+ | < | ||
+ | 1200512345627 | ||
+ | 1100227372912 | ||
+ | 1000312034115 | ||
+ | 0900414732112 | ||
+ | </ | ||
+ | |||
+ | Lendo as dados com colunas de tamanho definido | ||
+ | <code R> | ||
+ | foo <- read.fwf(" | ||
+ | foo | ||
+ | </ | ||
+ | |||
+ | É possível excluir um conjunto de caracteres (uma ou mais variáveis), | ||
+ | Isto permite selecionar somente o que se quer ler. | ||
+ | <code R> | ||
+ | read.fwf(" | ||
+ | </ | ||
+ | |||
+ | Agora vamos supor que temos uma variável (como caracter) com a especificação da composição das colunas.\\ | ||
+ | Supondo que a terceira variável tem duas casas decimal e a quarta tem uma e a variável seria da forma: | ||
+ | <code R> | ||
+ | DEC <- c(" | ||
+ | </ | ||
+ | |||
+ | Vamos ilustrar o uso da linguagem com alguns elementos usados para ler e preparar os dados. | ||
+ | <code R> | ||
+ | ## achando o total de caracteres de cada campo | ||
+ | foo1 <- strsplit(DEC, | ||
+ | foo1 | ||
+ | foo2 <- sapply(foo1, | ||
+ | foo2 | ||
+ | read.fwf(" | ||
+ | </ | ||
+ | |||
+ | Agora preparando os campos decimais. | ||
+ | <code R> | ||
+ | foo3 <- sapply(foo1, | ||
+ | foo3 | ||
+ | COLS <- !is.na(foo3) | ||
+ | COLS | ||
+ | |||
+ | sweep(data.matrix(foo[, | ||
+ | foo[,COLS] <- sweep(data.matrix(foo[, | ||
+ | foo | ||
+ | </ | ||
+ | |||
+ | Limpeza... | ||
+ | <code R> | ||
+ | rm(foo, DEC, foo1, foo2, foo3) | ||
+ | </ | ||
+ | |||
+ | Agora vamos montar uma função que concatena os comandos acima para facilitar a leitura de arquivos deste tipo sempre que preciso. | ||
+ | <code R> | ||
+ | read.meudado <- function(file, | ||
+ | | ||
+ | | ||
+ | arq <- read.fwf(file, | ||
+ | | ||
+ | COLS <- !is.na(decimais) | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | read.meudado(" | ||
+ | </ | ||
+ | |||
+ | Outro exemplo, os dados abaixo no arquivo '' | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <code R> | ||
+ | read.fwf(" | ||
+ | |||
+ | DEC1 <- c(" | ||
+ | read.meudado(" | ||
+ | </ | ||
+ | |||
+ | Outro exemplo, os dados abaixo no arquivo '' | ||
+ | < | ||
+ | Dados no formato FWF | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Lendo com a função, note o uso do mecanismo de '' | ||
+ | |||
+ | <code R> | ||
+ | read.meudado(" | ||
+ | </ | ||
+ | |||
+ | ===== Dados reais da Regina ===== | ||
+ | Lendo arquivo descritor | ||
+ | <code R> | ||
+ | desc <- read.table(" | ||
+ | desc | ||
+ | desc$V3 | ||
+ | |||
+ | desc$V4 <- ifelse(desc$V2 == " | ||
+ | desc | ||
+ | desc$V4[grep(" | ||
+ | desc | ||
+ | </ | ||
+ | |||
+ | Lendo os dados usando nossa função. | ||
+ | <code R> | ||
+ | Regina <- read.meudado(" | ||
+ | #, skip=2, n=20) | ||
+ | Regina | ||
+ | |||
+ | ## algumas operacoes uteis: | ||
+ | which(grepl(" | ||
+ | which(desc$V4==" | ||
+ | which(grepl(" | ||
+ | Regina[, | ||
+ | apply(Regina[, | ||
+ | |||
+ | ## colocar aqui os nome dasd variaveis trabalhado/ | ||
+ | # | ||
+ | |||
+ | Regina$V29 | ||
+ | as.Date(as.character(Regina$V29), | ||
+ | |||
+ | Regina$V29 <- as.Date(as.character(Regina$V29), | ||
+ | |||
+ | Regina <- read.meudado(" | ||
+ | Regina | ||
+ | </ | ||
+ | |||
+ | Queremos ordenar os dados por data. Antes uma revisão sobre ordenação. | ||
+ | <code R> | ||
+ | x <- rpois(10, lam=10) | ||
+ | x | ||
+ | sort(x) | ||
+ | order(x) | ||
+ | x[order(x)] | ||
+ | x[rev(order(x))] | ||
+ | args(order) | ||
+ | order(x, decreasing=T) | ||
+ | </ | ||
+ | |||
+ | Agora de volta aos dados | ||
+ | <code R> | ||
+ | Regina <- Regina[order(Regina$V29), | ||
+ | Regina | ||
+ | Regina[, c(" | ||
+ | aggregate(V7+V8+V9 ~ V29, FUN=sum, data=Regina) | ||
+ | |||
+ | ## algumas manipulacoes | ||
+ | Regina[, | ||
+ | |||
+ | aggregate(. ~ V29, data=Regina[, | ||
+ | aggregate(V7+V8 ~ V29, data=Regina[, | ||
+ | aggregate(cbind(V7, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Um pequeno exemplo de análises automáticas ===== | ||
+ | |||
+ | Suponha que voce tem um diretório (pasta) com alguns arquivos que devem ser lidos e processados por análises\\ | ||
+ | |||
+ | Vamos supor aqui o diretório '' | ||
+ | < | ||
+ | dir.create(" | ||
+ | cat( | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | file = " | ||
+ | |||
+ | cat( | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | file = " | ||
+ | </ | ||
+ | |||
+ | Para cada um dos arquivos queremos: | ||
+ | (i) ler os dados, (ii) calcular a despesa total por mês, (iii) colocar os resultados em uma página '' | ||
+ | |||
+ | <code R> | ||
+ | arquivos <- dir(" | ||
+ | arquivos | ||
+ | |||
+ | names(arquivos) <- c(" | ||
+ | arquivos | ||
+ | |||
+ | resumo1 <- function(x){ | ||
+ | gastos <- read.table(x, | ||
+ | names(gastos) <- c(" | ||
+ | totM <- aggregate(Despesa ~ Mes, FUN = sum, data=gastos) | ||
+ | return(totM) | ||
+ | } | ||
+ | |||
+ | res <- lapply(arquivos, | ||
+ | res | ||
+ | |||
+ | require(R2HTML) | ||
+ | saida <- HTMLInitFile(" | ||
+ | HTML.title(" | ||
+ | HTML("< | ||
+ | lapply(res, HTML, file=saida) | ||
+ | HTMLEndFile() | ||
</ | </ | ||