Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
Última revisão Ambos lados da revisão seguinte
cursos:mct:exemplo1b [2011/05/26 00:32]
paulojus criada
cursos:mct:exemplo1b [2011/05/27 19:14]
paulojus
Linha 41: Linha 41:
 ## lendo ## lendo
 dados <- ReadExcel("​COLOQUE_AQUI_O_NOME_DO_SEU_ARQUIVO"​) dados <- ReadExcel("​COLOQUE_AQUI_O_NOME_DO_SEU_ARQUIVO"​)
 +</​code>​
 +
 +
 +==== Dados de largura fixa  ====
 +
 +Considere que temos um arquivo de dados ''​exFWF.txt''​ com o seguinte conteúdo.
 +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.
 +<​code>​
 +  1200512345627
 +  1100227372912
 +  1000312034115
 +  0900414732112
 +</​code>​
 +
 +Lendo as dados com colunas de tamanho definido
 +<code R>
 +foo <- read.fwf("​exFWF.txt",​ wid=c(2,​3,​6,​2))
 +foo
 +</​code>​
 +
 +É possível excluir um conjunto de caracteres (uma ou mais variáveis),​ usando índices negativos.\\
 +Isto permite selecionar somente o que se quer ler.
 +<code R>
 +read.fwf("​exFWF.txt",​ wid=c(2,​-3,​6,​2))
 +</​code>​
 +
 +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("​2",​ "​3",​ "​4,​2",​ "​1,​1"​)
 +</​code>​
 +
 +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,​ split=","​)
 +foo1
 +foo2 <- sapply(foo1,​ function(x) sum(as.numeric(x)))
 +foo2
 +read.fwf("​exFWF.txt",​ wid=foo2)
 +</​code>​
 +
 +Agora preparando os campos decimais.
 +<code R>
 +foo3 <- sapply(foo1,​ function(x) as.numeric(x[2]))
 +foo3
 +COLS <- !is.na(foo3)
 +COLS
 +
 +sweep(data.matrix(foo[,​COLS]),​ 2, 10^foo3[COLS],​ FUN="/"​)
 +foo[,COLS] <- sweep(data.matrix(foo[,​COLS]),​ 2, 10^foo3[COLS],​ FUN="/"​)
 +foo
 +</​code> ​
 +
 +Limpeza...
 +<code R>
 +rm(foo, DEC, foo1, foo2, foo3)
 +</​code>​
 +
 +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,​ formato, ...){
 +       ​lformato <- strsplit(formato,​ split=","​)
 +       ​ncampos <- sapply(lformato,​ function(x) sum(as.numeric(x)))
 +       arq <- read.fwf(file,​ width=ncampos,​ ...)
 +       ​decimais <- sapply(lformato,​ function(x) as.numeric(x[2]))
 +    COLS <- !is.na(decimais) ​
 +       ​arq[,​COLS] <- sweep(data.matrix(arq[,​COLS,​ drop=F]), 2, 10^decimais[COLS],​ FUN="/"​)
 +    ​return(arq)
 +}
 +
 +read.meudado("​exFWF.txt",​ formato = DEC)
 +</​code>​
 +
 +Outro exemplo, os dados abaixo no arquivo ''​exFWF-2.txt'',​ com campos alfanuméricos no arquivo.
 +<​code>​
 + ​12005AA12345627
 + ​11002BB27372912
 + ​10003BB12034115
 + ​09004CC14732112
 +</​code> ​
 +
 +<code R>
 +read.fwf("​exFWF-2.txt",​ wid=c(2,​3,​2,​6,​2))
 +
 +DEC1 <- c("​2",​ "​3",​ "​2",​ "​4,​2",​ "​1,​1"​)
 +read.meudado("​exFWF-2.txt",​ formato = DEC1)
 +</​code>​
 +
 +Outro exemplo, os dados abaixo no arquivo ''​exFWF-3.txt'',​ com campos alfanuméricos no arquivo e linhas a serem ignoradas.
 +<​code>​
 + Dados no formato FWF
 + ​Exemplo do curso
 + ​12005AA12345627
 + ​11002BB27372912
 + ​10003BB12034115
 + ​09004CC14732112
 +</​code>​
 +
 +Lendo com a função, note o uso do mecanismo de ''​ . . . ''​ para passar argumentos para ''​read.fwf()''​
 +
 +<code R>
 +read.meudado("​exFWF-3.txt",​ formato = DEC1, skip=2)
 +</​code>​
 +
 +===== 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 ''​Regina''​ com arquivos com o seguinte conteúdo que supomos ser o mês e a despesa:\\
 +<​code>​
 +dir.create("​Regina"​)
 +cat(
 +"​12 ​ 23,10 \n",
 +"​12 ​ 20,70 \n",
 +"​10 ​ 12,10 \n",
 +"​10 ​ 8,13  \n",
 + file = "​Regina/​arq1.txt"​)
 +
 +cat(
 +"​09 ​ 33,10 \n",
 +"​09 ​ 50,70 \n",
 +"​10 ​ 22,10 \n",
 +"​10 ​ 18,13 \n",
 + file = "​Regina/​arq2.txt"​)
 +</​code>​
 +
 +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 ''​html''​.
 +
 +<code R>
 +arquivos <- dir("​Regina",​ full.names=T)
 +arquivos
 +
 +names(arquivos) <- c("​MCT",​ "​MEC"​)
 +arquivos
 +
 +resumo1 <- function(x){
 +    gastos <- read.table(x,​ dec=",",​ head=F)
 +    names(gastos) <- c("​Mes",​ "​Despesa"​)
 +    totM <- aggregate(Despesa ~ Mes, FUN = sum, data=gastos)
 +    return(totM)
 +    }
 +
 +res <- lapply(arquivos,​ resumo1)
 +res
 +
 +require(R2HTML)
 +saida <- HTMLInitFile("​./",​filename="​regina",​ BackGroundColor="#​BBBBEE"​)
 +HTML.title("​Exemplo simples de automatizacao de analise",​ file=saida)
 +HTML("<​br>​Use um arquivo CSS para configurar a pagina!!!",​file=saida)
 +lapply(res, HTML, file=saida)
 +HTMLEndFile()
 </​code>​ </​code>​
  

QR Code
QR Code cursos:mct:exemplo1b (generated for current page)