2015-09-08 3 views
0

У меня есть data.frame, который содержит метаданные и путь имя файла в текстовые файлы, которые содержатR: Извлечение данных из файлов и тхт хранения данных в одной ячейке

data <- structure(list(region = structure(1:3, .Label = c("DE", "GB", "USA"), class = "factor"), name = structure(c(1L, 3L, 2L), .Label = c("File1", "Loc7812_Temp", "Loc889"), class = "factor"), txt_path = structure(c(1L,3L, 2L), .Label = c("/home/xyz/Downloads/Data/file1.txt", "/home/xyz/Downloads/Data/FolderTempData/datatemp7812.txt", "/home/xyz/Downloads/Data/Raw/datfile889.txt"), class = "factor")), .Names = c("region", "name","txt_path"), class = "data.frame", row.names = c(NA, -3L)) 

data 
    region   name             txt_path 
1  DE  File1      /home/xyz/Downloads/Data/file1.txt 
2  GB  Loc889    /home/xyz/Downloads/Data/Raw/datfile889.txt 
3 USA Loc7812_Temp /home/xyz/Downloads/Data/FolderTempData/datatemp7812.txt 

The текстовые файлы мои данные, которые вы можете скачать в структуре папок через мой dropbox here

Что я хотел бы сделать, это включить данные в дополнительный столбец, чтобы иметь возможность сравнивать данные и метаданные с другим фреймворком данных. Проблема в том, что данные в файлах .txt имеют разные длины строк и столбцов, и я не знаю, как я мог бы эффективно хранить это.

я был в состоянии читать данные из различных путей файлов в список с помощью следующей команды

list <- lapply(file.path(data$txt_path), read.table, header=TRUE,sep="\t", fill=TRUE, fileEncoding="latin1") 

С помощью этого шага, однако я теряю связь с метаданными. Как сохранить эту информацию в дополнительном столбце, чтобы вся информация о различных файлах txt была помещена в один элемент строки, соответствующий информации о файлах и метаданных (может быть, в списке внутри data.frame? В Matlab вы можете сделать это используя struct)

На следующем этапе я объединяю данные и избавляюсь от дубликатов, и именно поэтому я хочу «упаковать» данные в один элемент строки.

ответ

1

Кадр данных является технически списком, и, следовательно, он может иметь вложенные списки внутри себя. Вот краткий пример:

dt=data.frame(x=LETTERS[1:10],y=1:10) 

z=list("a","b","c") 
z=list(z,z,z,z,z,z,z,z,z,z) 
dt$z=z 
class(dt) 
class(dt$z) 
dt$z 

Однако работать с этим позже было бы очень сложно. я предлагаю вам сохранить содержимое файла отдельно в виде списка, а также создавать и переменную ID Ind ваш data.frame сохранить подключение к этому списку:

data$ID = 1:dim(data)[1] 

Таким образом, вы всегда сможете получить доступ к файлам содержание до list[data$ID]

Смежные вопросы