[R-br] Automatizar leitura de arquivos e converter nome em colunas
ASANTOS
alexandresantosbr em yahoo.com.br
Terça Julho 8 14:17:43 BRT 2014
Boa tarde pessoal,
Tenho inúmeros arquivos dpt que podem ser lidos com txt e
gostaria de fazer o seguinte, ler os dados que são apenas uma coluna em
cada arquivo e transpor eles, em seguida, pegar o nome do arquivo e a
cada _ criar uma nova coluna, sendo um arquivo:
Cupim%20Syntermes_COLONIA%201_operario_1_c1_140616.dpt
Gostaria que a última coluna fosse os dados transpostos no arquivo e as
colunas fosse: Cupim%20Syntermes, COLONIA%20, operario, 1, c1 e 140616.
Segue CRM com três arquivos:
#-------------------------------------------------------------------------------
### Download a partir de uma lista de links com os arquivos
#-------------------------------------------------------------------------------
#
### Obtenção de links
links <- c(
"https://www.dropbox.com/s/l5ofrqw01tnfmmv/Cupim%20Syntermes_COLONIA%201_operario_1_c1_140616.dpt",
"https://www.dropbox.com/s/tkxkov16z813oc6/Cupim%20Syntermes_COLONIA%201_operario_2_c1_140616.dpt",
"https://www.dropbox.com/s/hjcmw9qutwwolo0/Cupim%20Syntermes_COLONIA%201_operario_3_c1_140616.dpt")
tokens <- gsub("^.*/s/","",dirname(links))
fileNames <- basename(links)
newLinks <- file.path("http://dl.dropbox.com/s", tokens, fileNames);
newLinks
for (a in newLinks) {
tryCatch(download.file(a, dest=basename(a), mode='wb'),
error=function(...) print("Falha no
download!"))}
### Verificando arquivos baixados corretamente
##############################################################################
fileInfo <- file.info(fileNames); fileInfo ### observe o segundo arquivo
files.OK <- fileNames[fileInfo$size>0 & !is.na(fileInfo$size)]; files.OK
### Operando arquivos baixados corretamente
##############################################################################
for (b in files.OK) {
t <- strsplit(b,"_|\\.")[[1]][2]
XYZ <- data.frame(rep(t),t(b[b[,1],]))
outName <- paste0('XYZ-', t, '.txt')
write.table(XYZ, file ="termiteNIR.mod", row.names=F,append=T)
message(noquote(paste(outName, "salvo em", getwd())))
}
#</code>
--
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================
Mais detalhes sobre a lista de discussão R-br