====== Função join.frames ====== Arquivo da função: {{:bie5782:01_curso_atual:alunos:trabalho_final:amjeckel:funcao_join.frames.r|join.frames}} #O objetivo desta função é construir uma matriz a partir de data frames com números diferentes de linha. #A primeira coluna dos data frames deverá ser a variável de interesse, e o restante das colunas, os valores de observação de cada caso. #A função irá organizar os dataframes levando em conta a variável de interesse. join.frames<- function(path, na.zero=F, binary=F, transpose=T, file=F) { filenames<- list.files(path) #Objeto com o nome dos arquivos da pasta indicada filelist<- lapply(filenames, read.delim) #Objeto tipo lista com todos os data.frames que estão na pasta indicada frames<-Reduce(function(x,y) merge(x,y, all=TRUE), filelist) #Junta todos os arquivos de data.frame num arquivo só. Onde não houver dado de uma determinada linha em um dos data.frames, ele vai transformar colocar um NA. #Verificar se existe algum nome repetido na variável de interesse rownames(frames)<- frames[,1] #Coloca a variável de interesse que está na primeira linha como o nome das linhas. frames<- frames[,-1] #Retira a primeira coluna, para deixar o data.frame apenas numérico #Se o argumento na.zero=F, ele vai deixar NA. Se o na.zero=T, ele vai transformar os NAs em zero. if(na.zero==T) { frames[is.na(frames)]<- 0 #Transforma NA em 0 } #Se o argumento binary=F, ele vai deixar os valores que estão nos data.frames. Se binary=T, ele vai tranformar os NAs zero, deixar onde tem zero, e tranformar todas as posições que tem valor em 1. if(binary==T) { frames[is.na(frames)]<- 0 #Transforma NA em 0 frames[frames>0] <- 1 #Transforma todos os valores acima de 0 em 1 } #Se o argumento transpose=T, ele vai transpor o data.frame. Caso transpose=F, ele vai deixar o data.frame do jeito que está. if(transpose==T) { frames<-t(frames) #Transpõe o data.frame } #Se o argumento file=NULL, ele vai liberar o data.frame na área de trabalho. Se file="path" ou "file.txt", gravará um arquivo .txt no arquivo indicado ou no diretório de trabalho ativo. if(file==F) { return(frames) #Retorna na área de trabalho o data.frame gerado }else { write.table(frames, file, sep="\t") #Salva o data.frame em um arquivo .txt no diretório ativo } } ====== Página do Help: join.frames ====== join.frames package:unknown R Documentation Cria um único data frame a partir de outros data frames Description: Esta função cria um data.frame a partir de outros data.frames com diferentes números de linha de um diretório especificado. A primeira coluna de cada data.frame deve ser a variável de interesse, e as outras colunas, as observações de cada caso. Esta função irá organizar o data.frame baseado na primeira coluna de cada data.frame, que deverá ser a variável de interesse. Se em algum dos data.frames algum caso da variável de interesse não estiver presente, será colocado um NA. Usage: join.frames(path, na.zero=F, binary=F, transpose=F, file=F) Arguments: path diretório onde estão os arquivos .txt que serão lidos na função. Os arquivos serão lidos com a função read.delim(). na.zero se TRUE, transforma os NAs em 0. binary FALSE - os valores de cada observação serão mantidos como nos arquivos originais. Se TRUE, transforma o data.frame em dados de presença (1) e ausência (0). transpose se FALSE, as colunas e linhas do data.frame serão mantidos como os arquivos de data.frames originais. file se FALSE, o data.frame final será lançado no área de trabalho. Se file="file.txt", o data.frame será salvo no diretório atual como arquivo .txt, separado por tabulação. Details: Note que o diretório especificado no "path" deve ser exclusivo para os arquivos que serão trabalhados na função, já que todos os arquivos do diretório serão lidos. Value: join.frames gera o data.frame final na área de trabalho. Se for especificado algum nome para o arquivo .txt, será gerado um arquivo .txt separado por tabulação com o data.frame no diretório ativo. Warning: A primeira coluna, da variável de interesse, será transformado em nome de linhas em um determinado momento. Caso exista alguma observação repetida ou nome repetido nesta coluna, o rownames() gerará uma mensagem de erro impossibilitando a continuidade da função. Note: Os arquivos serão lidos do diretório especificado pela função read.delim(). Certifique-se que os arquivos estão no formato correto. Author(s): A. M. Jeckel See Also: read.delim() rownames() Examples: #Para executar o exemplo, o arquivo Exemplo_Funcao.zip deve ser baixado (wikialunos de Adriana Moriguchi Jeckel: http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:01_curso_atual:alunos:trabalho_final:amjeckel:func ), e colocado em um diretório exclusivo, o qual será o seu "path" #Assim que baixado, coloque esta pasta como diretório ativo getwd() #Verifique se o diretório está correto dir() #Verifique se apenas os arquivos do exemplo estão neste diretório join.frames(getwd(), na.zero=T, binary=F, transpose=F, file="example.txt") ===== Link para o exemplo_funcao.zip ===== {{:bie5782:01_curso_atual:alunos:trabalho_final:amjeckel:exemplo_funcao.zip|Exemplo_Funcao.zip}}