Рейтинг:1

Извлечение определенных данных из разных таблиц и их объединение

флаг in

Я хотел бы извлечь определенные строки из определенных столбцов из разных таблиц на основе заголовка столбца. Однако мои знания кажутся слишком ограниченными, чтобы решить эту проблему самостоятельно (как в командной строке, так и в python).

У меня есть каталог с растущим количеством файлов .tsv (таблиц OTU). Все эти файлы имеют одинаковую структуру:

  • Строка 1 содержит заголовки.
  • Строки 2 - x содержат данные. Количество столбцов может отличаться в разных файлах.
  • Столбец 1 всегда содержит идентификаторы OTU.
  • Последний столбец всегда содержит таксономию.

файлы в текстовом формате можно найти внизу

Например, файл 1 выглядит так:

OTU_id 20210801_sampleA 20210801_sampleB 20210801_sampleC Таксономия
отуА 5 1 0 Ганс крутой
отуБ 2 0 0 У Патриции голубые глаза
otuF 0 6 2 Рутгер на самом деле Барт.
отуз 1 3 0 Феликс был потерян

Файл 2 выглядит так:

OTU_id 20211111_sampleT 20211111_sampleG 20211111_sampleA Таксономия
отуА 0 3 3 Ганс крутой
отуБ 2 1 0 У Патриции голубые глаза
отуП 1 6 0 Томас великолепен
отуТ 2 22 56 Анна и Эльза
отуз 1 8 4 Феликс был потерян

Конечно, количество семплов и отусов у каждого файла разные. Как вы также можете видеть, заголовкам примеров всегда предшествует дата. В определенном файле это всегда одна и та же дата.

Теперь я хочу добиться следующего:

Если у меня есть определенное имя образца, например, образец A, я хочу извлечь результаты для этого образца из всех таблиц (файлов .tsv) в каталоге. Конечно, sampleA следует извлекать только из файлов, в которых он присутствует.

В первой таблице он найдет образец A во втором столбце и должен принять результаты, для которых значение в следующих строках больше 0. Во второй таблице он найдет образец A в 4-м столбце.

Итоговая таблица должна выглядеть так:

OTU_id 20210801_sampleA 20211111_sampleA Таксономия
отуА 5 3 Ганс крутой
отуБ 2 0 У Патриции голубые глаза
отуз 1 4 Феликс был потерян
отуТ 0 56 Анна и Эльза

SampleA содержит данные для otuA,B,Z в первом файле. Эти результаты перенимаются (таким образом, OTU_id, значения заголовка 20210801_sampleA и таксономия).

Как вы увидите, otuF не был извлечен из первой таблицы, потому что там у sampleA было значение 0. otuF также отсутствует в таблице 2, поэтому полное отсутствие в выходном файле.

otuA и otuZ также имели значения > 0 в таблице 2, поэтому эти значения были приняты.

otuB имел значение 0 для sampleA в таблице 2. Обычно он не извлекает его, но поскольку он был извлечен из таблицы 1, в этой позиции добавляется 0.

otuT присутствует только в таблице 2 и поэтому был извлечен оттуда (OTU_id, значение для 20211111_sampleA и таксономии). Поскольку он не был найден в таблице 1, в этой позиции добавляется 0.

Таким образом, в файле результатов первым столбцом также должен быть OTU_id. столбцы со 2 по x должны содержать данные для sampleA, извлеченные из файлов в каталоге. Последний столбец должен содержать таксономию.

Надеюсь, вам удалось все понять. Это беспокоило меня в течение некоторого времени, и мне не хватало навыков, чтобы понять это. Пожалуйста, дайте мне знать, если что-то не ясно!

Большое спасибо за вашу помощь и извините, что беспокою вас с этим!

Ваше здоровье Гийом

Текстовая таблица 1.tsv:

OTU_id 20210801_sampleA 20210801_sampleB 20210801_sampleC Таксономия
otuA 5 1 0 Ганс крутой
otuB 2 0 0 У Патриции голубые глаза
otuF 0 6 2 Рутгер на самом деле Барт
otuZ 1 3 0 Феликс потерялся

текстовый формат table2.tsv

OTU_id 20211111_sampleT 20211111_sampleG 20211111_sampleA Таксономия
otuA 0 3 3 Ганс крутой
otuB 2 1 0 У Патрисии голубые глаза
otuP 1 6 0 Томас великолепен
otuT 2 22 56 Анна и Эльза
otuZ 1 8 4 Феликс потерялся

текстовый формат output.tsv

OTU_id 20210801_sampleA 20211111_sampleA Таксономия
otuA 5 3 Ганс крутой
otuB 2 0 У Патрисии голубые глаза
otuZ 1 4 Феликс потерялся
otuT 0 56 Анна и Эльза
muru avatar
флаг us
Пожалуйста, опубликуйте пример ввода и ожидаемый вывод в виде текста в формате кода, пожалуйста: https://askubuntu.com/editing-help#code Это упрощает тестирование.
флаг in
Привет, муру, я добавил это в конец поста. Я надеюсь ты это имел в виду? Пожалуйста, дайте мне знать, если я сделал это неправильно.
muru avatar
флаг us
Спасибо, так намного лучше!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.