Điểm:1

Trích xuất dữ liệu cụ thể từ các bảng khác nhau và hợp nhất nó

lá cờ in

Tôi muốn trích xuất các hàng cụ thể từ các cột cụ thể từ các bảng khác nhau, dựa trên tiêu đề cột. Tuy nhiên, kiến ​​​​thức của tôi dường như còn quá hạn chế để tự giải quyết (cả về dòng lệnh và python).

Tôi có một thư mục chứa ngày càng nhiều tệp .tsv (bảng OTU). Tất cả các tệp này đều có cùng bố cục:

  • Hàng 1 chứa tiêu đề.
  • Hàng 2 - x chứa dữ liệu. Số cột có thể khác nhau giữa các tệp.
  • Cột 1 luôn chứa các id OTU.
  • Cột cuối cùng luôn chứa Phân loại.

tập tin định dạng văn bản có thể được tìm thấy ở phía dưới

Ví dụ, tập tin 1 trông như thế này:

OTU_id 20210801_sampleA 20210801_sampleB 20210801_sampleC phân loại
otuA 5 1 0 Hans thật tuyệt
otuB 2 0 0 Patricia có đôi mắt xanh
otuF 0 6 2 Rutger thực sự là Bart
otuZ 1 3 0 Félix đã bị lạc

Tệp 2 trông như thế này:

OTU_id 20211111_sampleT 20211111_sampleG 20211111_sampleA phân loại
otuA 0 3 3 Hans thật tuyệt
otuB 2 1 0 Patricia có đôi mắt xanh
otuP 1 6 0 Thomas thật tuyệt
otuT 2 22 56 Anna và Elsa
otuZ 1 8 4 Félix đã bị lạc

Tất nhiên, số lượng mẫu và otus mỗi tệp là khác nhau. Như bạn cũng có thể thấy, tiêu đề của các mẫu luôn được đặt trước ngày tháng. Trong một tệp nhất định, đây luôn là cùng một ngày.

Những gì tôi muốn đạt được bây giờ là như sau:

Nếu tôi có một tên mẫu nào đó, ví dụ sampleA, tôi muốn trích xuất kết quả cho mẫu này từ tất cả các bảng (tệp .tsv) trong thư mục. Tất nhiên, sampleA chỉ nên được trích xuất từ ​​​​các tệp có trong đó.

Trong bảng đầu tiên, nó sẽ tìm thấy mẫuA trong cột thứ hai và nó sẽ lấy các kết quả mà giá trị ở các hàng bên dưới lớn hơn 0. Trong bảng thứ hai, nó sẽ tìm thấy mẫuA trong cột thứ 4.

Bảng cuối cùng sẽ trông như thế này:

OTU_id 20210801_sampleA 20211111_sampleA phân loại
otuA 5 3 Hans thật tuyệt
otuB 2 0 Patricia có đôi mắt xanh
otuZ 1 4 Félix đã bị lạc
otuT 0 56 Anna và Elsa

SampleA có dữ liệu cho otuA,B,Z trong tệp đầu tiên. Các kết quả này được tiếp quản (vì vậy OTU_id, các giá trị cho tiêu đề 20210801_sampleA và Phân loại).

Như bạn sẽ thấy, otuF không được trích xuất từ ​​bảng đầu tiên, vì mẫuA có giá trị 0 ở đó. otuF cũng không có trong bảng 2, do đó hoàn toàn không có trong tệp đầu ra.

otuA và otuZ cũng có giá trị > 0 trong bảng 2, vì vậy các giá trị này đã được thay thế.

otuB có giá trị 0 đối với mẫu A trong bảng 2. Thông thường nó sẽ không trích xuất nó, nhưng vì nó đã được trích xuất từ ​​bảng 1 nên số 0 được thêm vào vị trí đó.

otuT chỉ có trong bảng 2 và do đó đã được trích xuất ở đó (OTU_id, giá trị cho 20211111_sampleA và Taxonomy). Vì không tìm thấy trong bảng 1 nên số 0 được thêm vào vị trí đó.

Trong tệp kết quả, cột đầu tiên cũng phải là OTU_id. các cột từ 2 đến x phải chứa dữ liệu cho mẫuA, được trích xuất từ ​​các tệp trong thư mục. Cột cuối cùng phải chứa Phân loại.

Tôi hy vọng bạn quản lý để hiểu tất cả mọi thứ. Nó đã làm phiền tôi một thời gian và thiếu kỹ năng để tìm ra nó. Xin vui lòng cho tôi biết nếu một cái gì đó không rõ ràng!

Cảm ơn rất nhiều vì sự giúp đỡ của bạn và xin lỗi đã làm phiền bạn với điều này!

Chúc mừng guillaume

Bảng định dạng văn bản 1.tsv:

OTU_id 20210801_sampleA 20210801_sampleB 20210801_sampleC Phân loại
otuA 5 1 0 Hans thật tuyệt
otuB 2 0 0 Patricia có đôi mắt xanh
otuF 0 6 2 Rutger thực ra là Bart
otuZ 1 3 0 Felix đã mất tích

bảng định dạng văn bản2.tsv

OTU_id 20211111_sampleT 20211111_sampleG 20211111_sampleA Phân loại
otuA 0 3 3 Hans thật ngầu
otuB 2 1 0 Patricia có đôi mắt xanh
otuP 1 6 0 Thomas rất tuyệt
otuT 2 22 56 Anna và Elsa
otuZ 1 8 4 Felix đã mất tích

đầu ra định dạng văn bản.tsv

OTU_id 20210801_sampleA 20211111_sampleA Phân loại
otuA 5 3 Hans thật ngầu
otuB 2 0 Patricia có đôi mắt xanh
otuZ 1 4 Felix đã bị mất
otuT 0 56 Anna và Elsa
muru avatar
lá cờ us
Vui lòng gửi đầu vào mẫu và đầu ra dự kiến ​​dưới dạng văn bản có định dạng mã, vui lòng: https://askubuntu.com/editing-help#code Điều đó giúp kiểm tra dễ dàng hơn
lá cờ in
Xin chào muru, tôi đã thêm những thứ này vào cuối bài viết ngay bây giờ. Tôi hy vọng đây là ý của bạn? Xin vui lòng cho tôi biết nếu tôi đã làm điều đó sai.
muru avatar
lá cờ us
Cảm ơn, điều đó tốt hơn nhiều!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.