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

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
cursos:mct:exemplo1b [2011/05/26 22:11]
paulojus
cursos:mct:exemplo1b [2011/05/27 00:31]
paulojus revisão anterior restaurada
Linha 58: Linha 58:
 Lendo as dados com colunas de tamanho definido Lendo as dados com colunas de tamanho definido
 <code R> <code R>
-foo <- read.fwf("​dados/exFWF.txt",​ wid=c(2,​3,​6,​2))+foo <- read.fwf("​exFWF.txt",​ wid=c(2,​3,​6,​2))
 foo foo
 </​code>​ </​code>​
Linha 65: Linha 65:
 Isto permite selecionar somente o que se quer ler. Isto permite selecionar somente o que se quer ler.
 <code R> <code R>
-read.fwf("​dados/exFWF.txt",​ wid=c(2,​-3,​6,​2))+read.fwf("​exFWF.txt",​ wid=c(2,​-3,​6,​2))
 </​code>​ </​code>​
  
Linha 81: Linha 81:
 foo2 <- sapply(foo1,​ function(x) sum(as.numeric(x))) foo2 <- sapply(foo1,​ function(x) sum(as.numeric(x)))
 foo2 foo2
-read.fwf("​dados/exFWF.txt",​ wid=foo2)+read.fwf("​exFWF.txt",​ wid=foo2)
 </​code>​ </​code>​
  
Linha 88: Linha 88:
 foo3 <- sapply(foo1,​ function(x) as.numeric(x[2])) foo3 <- sapply(foo1,​ function(x) as.numeric(x[2]))
 foo3 foo3
-foo3[is.na(foo3)] <- 0 +COLS <- !is.na(foo3) 
-foo3 +COLS 
-as.data.frame(sweep(data.matrix(foo),​ 2, 10^foo3, FUN="/"​))+ 
 +sweep(data.matrix(foo[,​COLS]),​ 2, 10^foo3[COLS],​ FUN="/"​) 
 +foo[,COLS] <- sweep(data.matrix(foo[,COLS]), 2, 10^foo3[COLS], FUN="/"​) 
 +foo
 </​code> ​ </​code> ​
  
Linha 100: Linha 103:
 Agora vamos montar uma função que concatena os comandos acima para facilitar a leitura de arquivos deste tipo sempre que preciso. Agora vamos montar uma função que concatena os comandos acima para facilitar a leitura de arquivos deste tipo sempre que preciso.
 <code R> <code R>
-read.meudado <- function(file,​ formato){+read.meudado <- function(file,​ formato, ...){
        ​lformato <- strsplit(formato,​ split=","​)        ​lformato <- strsplit(formato,​ split=","​)
        ​ncampos <- sapply(lformato,​ function(x) sum(as.numeric(x)))        ​ncampos <- sapply(lformato,​ function(x) sum(as.numeric(x)))
-       arq <- read.fwf(file,​ width=ncampos)+       arq <- read.fwf(file,​ width=ncampos, ...)
        ​decimais <- sapply(lformato,​ function(x) as.numeric(x[2]))        ​decimais <- sapply(lformato,​ function(x) as.numeric(x[2]))
-    decimais[is.na(decimais)] <- 0 +    COLS <- !is.na(decimais)  
-       arq <- as.data.frame(sweep(data.matrix(arq),​ 2, 10^decimais,​ FUN="/"​))+       arq[,​COLS] ​<- sweep(data.matrix(arq[,COLS, drop=F]), 2, 10^decimais[COLS], FUN="/"​)
     ​return(arq)     ​return(arq)
-    }+}
  
-read.meudado("​dados/exFWF.txt",​ formato = DEC)+read.meudado("​exFWF.txt",​ formato = DEC)
 </​code>​ </​code>​
  
-Limitações da função acima (que podem ser generalizadas...) +Outro exemplo, os dados abaixo no arquivo ''​exFWF-2.txt'',​ com campos alfanuméricos no arquivo
-  - assume que todos os campos são numericos +<​code>​ 
-  - ao final armazena todos os campos como numeric (double)+ 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>​
  

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