R - Соединить таблицы изнутри l oop к таблице вне цикла - PullRequest
0 голосов
/ 25 февраля 2020

Я сделал нечто подобное, связав вместе таблицы, сгенерированные в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...