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 Ambos lados da revisão seguinte
cursos:mct:exemplo1b [2011/05/26 00:32]
paulojus criada
cursos:mct:exemplo1b [2011/05/26 22:11]
paulojus
Linha 42: Linha 42:
 dados <- ReadExcel("​COLOQUE_AQUI_O_NOME_DO_SEU_ARQUIVO"​) dados <- ReadExcel("​COLOQUE_AQUI_O_NOME_DO_SEU_ARQUIVO"​)
 </​code>​ </​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("​dados/​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("​dados/​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("​dados/​exFWF.txt",​ wid=foo2)
 +</​code>​
 +
 +Agora preparando os campos decimais.
 +<code R>
 +foo3 <- sapply(foo1,​ function(x) as.numeric(x[2]))
 +foo3
 +foo3[is.na(foo3)] <- 0
 +foo3
 +as.data.frame(sweep(data.matrix(foo),​ 2, 10^foo3, FUN="/"​))
 +</​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]))
 +    ​decimais[is.na(decimais)] <- 0
 +       arq <- as.data.frame(sweep(data.matrix(arq),​ 2, 10^decimais,​ FUN="/"​))
 +    ​return(arq)
 +    }
 +
 +read.meudado("​dados/​exFWF.txt",​ formato = DEC)
 +</​code>​
 +
 +Limitações da função acima (que podem ser generalizadas...)
 +  - assume que todos os campos são numericos
 +  - ao final armazena todos os campos como numeric (double)
  
  

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