У меня есть два разделенных табуляцией файла из 1708 строк и разного количества столбцов. Моя цель состоит в том, чтобы сравнить значение, сохраненное для всех строк, но только некоторые специфические c столбцы . У меня есть два списка, содержащие номер столбца, который я хочу сравнить; Вот пример:
- Файл A ➝ col_ind_A = [12,20,24,55]
- Файл B ➝ col_ind_B = [14,28,35,79]
Здесь столбец 12 файла A следует сравнивать со столбцом 14 файла B, 20 файла A с 28 файлом B и так далее. Если файл A имеет значение 0, а файл B - нет, я хочу изменить файл C (копия файла A) в этой позиции, а затем сохранить значение файла B (которое не равно 0):
# FileA #FileB #FileC
col11 col12 col13 col13 col14 col15 col11 col12 col13
A C G A C G A C G
G 0 T G T T G T T
Я видел, что сравнение столбцов обычно выполняется с awk , но я довольно плохо знаком с bash, и я не знаю, как перебирать строки двух файлы, пока я перебираю списки col_ind и указываю позиции столбцов, которые я хочу сравнить. Любые предложения приветствуются.
Если это поможет, я покажу код R, который делает именно это (он слишком медленный):
for(i in 1:1708){ #rows
for(j in 1:31946){ #cols
if( fileA[i, col_ind_A[j]] == '0' && fileA[i, col_ind_A[j]] != fileB[ i, col_ind_B[j]]){
fileC[i, col_ind_A[j]] <- fileB[i, col_ind_B[j]] # write value from fileB in file C
}
}
}
Любая помощь будет великолепной. Спасибо !!