Я сделал нечто подобное, связав вместе таблицы, сгенерированные в al oop, но я застрял, пытаясь выяснить, как по-настоящему объединить их между циклами.
У меня есть вложенные циклы , Первый l oop перебирает список местоположений файлов и ищет указанный файл c для сбора сводных данных. После того, как данные собраны и отформатированы, они выглядят так:
Table1
Path1 Path2 File_Name ID Value1
root home Sample1 1 1
root home Sample1 2 0
root home Sample1 5 1
root home Sample1 7 1
root home Sample2 1 0
root home Sample2 2 1
root home Sample2 3 1
root home Sample2 4 1
root home Sample3 1 0
root home Sample3 3 1
root home Sample3 6 1
Далее запускается новый l oop, который выполняет итерацию по указанному c файлы в каталоге, соответствующие каждому имени образца. Это создает таблицу, специфицирующую c для отдельного образца, которая выглядит следующим образом:
Таблица2
Path1 Path2 File_Name ID Value2
root home Sample1 1 5000
root home Sample1 2 9000
root home Sample1 5 400
root home Sample1 7 3500
То, что я пытаюсь выяснить, это как я присоединяюсь вторая таблица к первой таблице на основе столбцов File_Name и ID? Таким образом, при запуске второго l oop он заполняет столбец Value2 в первой таблице, связанный с соответствующим файлом и идентификатором?
Промежуточный вывод: (обновлена таблица 1 в главном l oop)
Path1 Path2 File_Name ID Value1 Value2
root home Sample1 1 1 5000
root home Sample1 2 0 9000
root home Sample1 5 1 400
root home Sample1 7 1 3500
root home Sample2 1 0
root home Sample2 2 1
root home Sample2 3 1
root home Sample2 4 1
root home Sample3 1 0
root home Sample3 3 1
root home Sample3 6 1
Основы моего текущего кода:
for (i in first_list){
master list = tibble(file = i) %>%
mutate(Data = lapply(file, function(i){
read.csv(i, header=TRUE, skip=1, sep = "\t", check.names = "FALSE")})) %>%
unnest(Data)
second=list.files(path=raw_file_path,recursive=T,pattern=raw_data,full.names=T)
for (i in second_list){
sub_list= tibble(file = i) %>%
mutate(Data = lapply(file, function(i){
fread(i, sep = "\t", select = c(10,19),skip=1)})) %>%
unnest(Data)
}
#push data to database before beginning next loop iteration
}
Конечный желаемый результат после второго l oop, проходящего через каждый файл в его списке будет:
Вывод:
Path1 Path2 File_Name ID Value1 Value2
root home Sample1 1 1 5000
root home Sample1 2 0 9000
root home Sample1 5 1 400
root home Sample1 7 1 3500
root home Sample2 1 0 5646
root home Sample2 2 1 5999
root home Sample2 3 1 10000
root home Sample2 4 1 42
root home Sample3 1 0 655
root home Sample3 3 1 12358
root home Sample3 6 1 6800