Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
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> | ||